這裡只是記錄下c語言裡使用巨集來控制結構體裡成員定義。
在閱讀linux核心原始碼時,會發現很多結構體裡都有各種巨集開關,來控制是否定義某個成員變數。
下面自己寫個簡單的程式驗證下,
#include
#define _switch_
struct teststruct
;int
main
(void);
printf
("a = %d\n"
, obj.a)
;#ifdef _switch_
// 巨集開關
printf
("b = %d\n"
, obj.b)
;#endif
printf
("c = %d\n"
, obj.c)
;return0;
}
輸出如下,
當我們把第三行的#define _switch_
注釋掉,再次編譯執行,得到輸出如下,
說明這個巨集開關起作用了。
感謝閱讀。
c語言裡,關於巨集定義的使用
巨集定義最關鍵的是要注意它只是乙個文字替換,不注意的話,很容易引起歧義,看下面一段 include define m x x x int main int a,b 3 a m b 2 printf d n a return 0 這裡的 m 是想要得到 x 的平方,而在程式中呼叫的引數為 b 2 原本...
C語言使用巨集初始化結構體的問題
linux核心原始碼中廣泛的使用巨集來進行結構體物件定義和初始化,但是進行物件初始化的時候需要注意巨集引數和結構體成員名衝突的問題,下面進行簡單測試說明,編寫乙個程式建立乙個結構體,然後使用巨集進行結構體初始化 1 include stdio.h 23 struct guy 4 910 define...
C語言的結構體使用
1 基本的建立結構體和使用 include include includestruct man void main struct man man1 man1.age 30 man1.name jam printf d,s n man.age,man.name printf d,s n man1.ag...