十四、指針和引用(四) 1、字元處理(字元串) 1)字元串 日常生活中,單個字元無法滿足我們的需求,比如一個單詞hello要由五個字元組成,名字張三要由兩個中文字元來組成,我們把這種連續的字元稱為字元串,字元串在記憶體中的表現就是連續的字元。比如hello在記憶體中是這樣子的。 註:字元在記憶體中 ...
C語言【預處理器】
1、一些關於預處理的知識
C代碼中,一般帶 # 的都是預處理指令,包括 巨集替換、文件包含、條件編譯 等。
為相容一些老編譯器, # 前後一般不寫空格
預處理指令後面不加分號。
2、巨集定義
// 格式如下
#define 巨集名稱 (替換文本) // 這個替換文本記得加上括弧,因為是直接文本替換,可能會由於優先順序而混亂
// 這個替換文本可以是字面量、表達式、函數等
// 帶參數的巨集。 舉個例子
#define print_int(n) printf("%d\n", n)
void main(){
// 巨集的使用
int a = 10;
print_int(a);
}
// 巨集可嵌套
#define PI 3.14
#define S PI*2*2
// 使用巨集定義數據類型
#define BOOL int
取消巨集定義。在想解除巨集定義的代碼前加 #undef 巨集名稱。之後的代碼就不能使用定義好的巨集了。
// 帶參數的巨集。舉個例子
#define print_int(n) printf("%d\n", n) // 這個參數不能指定類型,需要自己謹慎,但這種方法比函數高效
3、文件包含
自定義頭文件,用" " 。 引號里填相對路徑或絕對路徑。基於當前目錄加./或不加
頭文件如果使用 " " 會先從當前目錄下找,找不到再從系統找。
頭文件如果使用 <> 會直接從系統找。
Win和Linux路徑分隔符分別是什麼?
4、條件編譯
#if 條件 ... #elif ... #else ... #endif // 這個endif不能省略
#ifdef 巨集名稱 ... #else ... #endif // 巨集名稱定義過則條件成立。沒有 #elif
#if defined 巨集名稱 ... #elif ... #else ... #endif // 同上。 可以有 #elif
#ifndef 巨集名稱 ... #else ... #endif // 巨集名稱沒有定義過則條件成立。沒有 #elif