1.define的簡單定義
例如:#define π 3.14
乙個簡單的π 就定義好了,它代表3.14,如果在程式裡面寫
int r = 2;
int area=π *r*r;
編譯器在處理這個**之前會對π 進行處理替換為3.14。
2.define的「函式定義」
define可以像函式那樣接受一些引數,如下
#define max(x,y) (x)>(y)?(x):(y);
3.巨集的單行定義
#define a(x) t_##x
#define b(x) #@x
#define c(x) #x
我們假設:x=1,則有:
a(1)------〉t_1
b(1)------〉'1'
c(1)------〉"1"
3.define的多行定義
define可以替代多行的**,例如:
#define macro(arg1, arg2) do while(0) /* (no trailing ; ) */
關鍵是要在每乙個換行的時候加上乙個"/"
4.在大規模的開發過程中,特別是跨平台和系統的軟體裡,define最重要的功能是條件編譯。
就是:#ifdef windows
......
......
#endif
#ifdef linux
......
......
#endif
可以在編譯的時候通過#define設定編譯環境
5.如何定義巨集、取消巨集
//定義巨集
#define [macroname] [macrovalue]
//取消巨集
#undef [macroname]
普通巨集#define pi (3.1415926)
帶引數的巨集
#define max(a,b) ((a)>(b)? (a),(b))
關鍵是十分容易產生錯誤,包括機器和人理解上的差異等等。
6.條件編譯
#ifdef ***…(#else) …#endif
例如 #ifdef dv22_aux_input
#define aux_mode 3
#else
#define auy_mode 3
#endif
#ifndef *** … (#else) … #endif
7.標頭檔案(.h)可以被標頭檔案或c檔案包含;
重複包含(重複定義)
由於標頭檔案包含可以巢狀,那麼c檔案就有可能包含多次同乙個標頭檔案,就可能出現重複定義的問題的。
通過條件編譯開關來避免重複包含(重複定義)
例如#ifndef __headerfile***__
#define __headerfile***__
…檔案內容
…#endif
define用法總結
巨集定義是c語言提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯。巨集定義和操作符的區別是 巨集定義是替換,不做計算,也不做表示式求解。格式 define 識別符號 字串 定義巨集 define pi 3.141592653 把圓周率定義為pi這個變數,而pi不能被修改...
C語言中 define用法總結
1.簡單的巨集定義 define 識別符號 替換列表 替換列表可以是數,字串字面量,標點符號,運算子,識別符號,關鍵字,字元常量。注意 替換列表是可以為空的 典型錯誤 define n 100 int a n 這樣會成為int a 100 這裡會處理成為一種標識記號一樣 define n 100 i...
c const與 define的用法總結
1 const a.可以用來定義常量 修飾函式引數 修飾函式返回值等三個作用。編譯階段 b.被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。2 define define是乙個巨集定義,可以定義乙個全域性變數,在整個檔案中都可以使用,它只是乙個字元替換操作,不做型別檢查...