c語言define的用法

2021-06-18 10:31:32 字數 1277 閱讀 3425

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...