目錄
防止頭文件重復包含
頭文件的作用
如何讓程序的多個 .cpp 文件之間共享全局變量(可能是 int、結構體、數組、指針、類對象)?
防止頭文件重復包含
為什么要防止頭問件重復包含?
?
?
?
當然一般也不會把變量定義放到頭問件,那為什么還需要防止重復包含??
?
?
頭文件的作用
?頭文件的主要作用與說明
?C++ 函數,函數分文件編寫_c++構造函數不同文件-CSDN博客
?C++類和對象--封裝,類分文件編寫_實現一個類如何設置頭文件封裝-CSDN博客
雜記 define,typedef,static,extern,memset,ifndef,遞歸,邏輯與&&,整型提升,算術轉換,棧區,高地址_ifndef &&-CSDN博客?
作用分類 | 說明 | 例子 |
---|---|---|
1. 函數/類聲明 | 提供函數原型或類接口,讓其他 .c/.cpp 文件知道如何使用它們 | int add(int, int); class Person { void say(); }; |
2. 類型定義 | 定義結構體(struct )、枚舉(enum )、typedef 、using 等類型 | typedef unsigned int uint; struct Point { int x, y; }; |
3. 變量聲明 | 使用 extern 聲明全局變量,使多個源文件共享該變量 | extern int g_count; |
4. 宏定義 | 定義常量或代碼片段,提高代碼可讀性與維護性 | #define PI 3.14159 #define MAX(a,b) ((a)>(b)?(a):(b)) |
5. 模板定義 | 模板函數或類定義通常必須放在頭文件中 | template<typename T> T max(T a, T b) { return a > b ? a : b; } |
6. 內聯函數 | 提高性能,允許編譯器將函數體展開到調用處 | inline int square(int x) { return x * x; } |
7. 命名空間聲明 | 定義邏輯作用域,避免命名沖突 | namespace math { int add(int, int); } |
8. 提高復用性 | 多個源文件共享接口,避免重復編寫聲明 | #include "utils.h" 讓多個文件重用工具函數接口 |
9. 分離接口與實現 | 將接口和實現分離,提高模塊化與可維護性 | .h 里寫聲明,.cpp 里寫實現 |
10. 條件編譯保護 | 防止頭文件被重復包含引起重復定義錯誤 | #ifndef HEADER_H ... #define HEADER_H ... #endif |
第3條不好。一般不這樣用
extern
聲明全局變量雖然合法并常見,但確實存在一些“壞味道”,在現代 C++ 開發中不推薦廣泛使用它。
如何讓程序的多個 .cpp
文件之間共享全局變量(可能是 int
、結構體、數組、指針、類對象)?
?
?
?
?
?
?
?
?
或者
static
?局部變量:
-
只在第一次進入函數時執行初始化
-
之后不再初始化,而是保留之前的值
?
?