C巨集定義 和 的用法

2021-07-03 23:58:15 字數 945 閱讀 8575

1、#是用來把變數名轉換為字串的,例如:

#define print(val) printf(#val"=%d\n", val)

int main()

通過預編譯:gcc -e test.c -o test.i

得到結果:

int main()

其作用相當於為輸入值新增了一對雙引號。

2、##用於連線字元,例如

#define name(no) name_##no

int main()

通過預編譯:gcc -e test.c -o test.i

得到結果:

int main()

需要注意的有兩點:

(1)此處的no不能為加引號的字串,否則會提示無效的預處理符號。

(2)而是存在巨集巢狀的情況,如下:

#define one 1

#define two 2

#define name(no) name_##no

int main()

對應預處理結果:

int main()

並不符合預期,處理方法是加一層巨集定義:

#define one 1

#define two 2

#define _name(no) name_##no

#define name(no) _name(no)

int main()

結果如下:

int main()

符合預期。

c 巨集定義用法 define

巨集定義語法 define name stuff define pi 3.14 定義乙個m,值為3.14 define do forever for 定義乙個死迴圈 define reg register 定義reg來作為register的別名 define case break case 在swi...

巨集定義 和 用法總結

今天學socket發現 usr include bits sockaddr.h 檔案35行有這麼一句話 1 一般用法 我們使用 把巨集引數變為乙個字串,用 把兩個巨集引數貼合在一起.用法 二 當巨集引數是另乙個巨集的時候 需要注意的是凡巨集定義裡有用 或 的地方巨集引數是不會再展開.1,非 和 的情...

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

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