1、#define的簡單定義作用
#define相當於乙個簡單的文字替換,對於普通的常量定義,我就不必多說了,但是對於類似於函式定義的形式,可能會出現錯誤,例如:
#define add(x,y) x+y
用到**中時會出現問題,比如計算式子c*add(x,y)*d,本意是計算出x與y的和之後在分別與c,d做乘積,可是因為#define僅僅相當於乙個簡單的文字替換,所以真實的計算是c*x + y*d;這樣的話就出現錯誤了!
2、#define可以進行多行**的定義,只需要在每行的末尾加上"\"符號即可,例如:
#define macro(arg1, arg2) do while(0)
3、用#define實現條件編譯,在大型的專案之中,需要通過條件編譯來選擇不同的編譯環境,例如:
#ifdef windows
......
......
#endif
#ifdef linux
......
......
#endif
可以在編譯的時候通過#define設定編譯環境
4、如何定義巨集、取消巨集
//定義巨集
#define [macroname] [macrovalue]
//取消巨集
#undef [macroname]
普通巨集#define pi (3.1415926)
帶引數的巨集
#define max(a,b) ((a)> (b)? (a),(b))
關鍵是十分容易產生錯誤,包括機器和人理解上的差異等等。
5、條件編譯
#ifdef ***…(#else) …#endif
例如#ifdef dv22_aux_input
#define aux_mode 3
#else
#define auy_mode 3
#endif
#ifndef *** … (#else) … #endif
6、標頭檔案(.h)可以被標頭檔案或c檔案包含;
重複包含(重複定義)
由於標頭檔案包含可以巢狀,那麼c檔案就有可能包含多次同乙個標頭檔案,就可能出現重複定義的問題的。
通過條件編譯開關來避免重複包含(重複定義) 例如
#ifndef __headerfile***__
#define __headerfile***__…
檔案內容 …
#endif
define用法,C語言 define詳解
c語言中,可以用 define 定義乙個識別符號來表示乙個常量。其特點是 定義的識別符號不佔記憶體,只是乙個臨時的符號,預編譯後這個符號就不存在了。預編譯又叫預處理。預編譯不是編譯,而是編譯前的處理。這個操作是在正式編譯之前由系統自動完成的。用 define 定義識別符號的一般形式為 define ...
C語言 define用法
define用法及注意事項 1.一般形式 define 識別符號 記號序列 例 define g 9.8 2.帶引數形式 define 識別符號 識別符號表 opt 記號序列 例 define square x x x 注意事項 注意括號使用,不然可能會出現歧義,如果定義成 define squar...
C語言 define的用法
1.簡單的巨集定義 define 識別符號 替換列表 替換列表可以是數,字串字面量,標點符號,運算子,識別符號,關鍵字,字元常量。注意 替換列表是可以為空的 典型錯誤 define n 100 int a n 這樣會成為int a 100 這裡會處理成為一種標識記號一樣 define n 100 i...