C語言中的巨集定義

2021-08-26 06:28:16 字數 1081 閱讀 6642

c語言中的巨集定義

c語言中的巨集定義也叫做預處理命令,預處理命令是c語言本身的組成部分,不能直接對它們進行編譯。

1.基本概念;

1>預處理不是c語句,是在編譯前進行的

2>預處理功能主要用於下3種情況:

ø 巨集定義

ø 檔案包含

ø 條件編譯

3>巨集是在編譯前進行的,程式不能直接對它們進行編譯,由預處理程式先進行替換。

說明:ø 乙個預處理命令占用乙個單獨的行,命令末尾不使用分號作為結束符。

ø 巨集定義是專門用於預處理命令的乙個專用名詞,它與定義變數的含義不同,它只做字元替換,不分配記憶體空間。

2.不帶引數的巨集

1>用乙個指定的識別符號(即名字)來代替乙個字串,它的一般形式為

#define 識別符號 字串

eg:#definemax_num 100

它的作用是在本程式檔案中使用指定的識別符號max_num來替代 100這個字串。

2>巨集定義是用巨集名代替乙個字串,也就是做簡單的置換,不做正確性檢查。(預編譯時不做任何語法檢查,只有在編譯已被巨集展開後的源程式時才會發現語法錯誤並報錯)

3>巨集定義不是c語句,不必在行末加分號。如果加了分號則會連分號一起進行替換

4>#definde出現在a處,則巨集名的有效範圍為定義命令之後到本原始檔之後到本原始檔結尾。

5>可以通過#undef命令終止巨集定義的作用域.

#definemax_num 100;

void main() ;

#undedf max_num

f()

說明:當解除巨集定義時,只需要指出巨集識別符號而不必給出後面的字串。

6>在進行巨集定義時,可以引用已定義的巨集名,可以層層置換(即巨集可以巢狀)

#define pi 3.141596

#define r 3.0

#define l 2*pi*r

#define s pi*r*r

7>對程式中使用雙引號括起來的字串,即使與巨集名相同,也不進行置換。

eg;printf(「l =%f\n,s=%f\n」,l,s);

在printf中雙引號內的l不進行替換,雙引號外的進行替換。

c 語言中的巨集定義

巨集定義 巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯 1.不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的 符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨...

C語言中的巨集定義

下列c 中包含兩種巨集定義,例如 include define max connection 1000 define mng port 5000 define min a,b a b a b define max a,b a b a b int main 方法1 gcc e 引數預編譯 gcc e ...

c語言解除巨集定義 C語言中巨集定義的用法

說到巨集定義,我們應該先了解什麼是預處理指令,相信大家並不會陌生,之前我們程式設計時,程式的開頭 include指令,define指令都是預處理指令,它能使我們的編譯更加的高效,便捷,因此c語言中是允許使用者自己加入一些特定的預處理指令的。一,不帶引數的巨集定義 不帶引數的巨集定義是比較簡單的,就是...