define用法總結

2021-06-15 22:18:46 字數 1448 閱讀 3882

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是乙個巨集定義,可以定義乙個全域性變數,在整個檔案中都可以使用,它只是乙個字元替換操作,不做型別檢查...