巨集定義是在預編譯時直接進行替換。而列舉值要在編譯時才能確定其值。所以任何在巨集定義中引用列舉值的操作都是錯誤的。
在下面的**中,編譯輸出為:
test1=1, num1=111
test2=2,num2=222
#include #include #define aaa (1)
#define bbb (2)
#define ccc (3)
enum;
#define test1 bb
#define test2 bbb
#if (test1 == aa)
#define num1 111
#elif (test1 == bb)
#define num1 222
#else
#define num1 333
#endif
#if (test2 == aaa)
#define num2 111
#elif (test2 == bbb)
#define num2 222
#else
#define num2 333
#endif
int main(int argc,char *argv)
列舉 共用體 typedef與巨集定義
c 語言列舉型別 實際問題中,有些變數的取值被限制在一定範圍內。例如,乙個星期內只有七天,一年 只有十二個月,乙個班每週有六門課程等。c 語言提供了一種列舉 enum 型別,可以列出所有可能的取值。定義形式為 enum 變數名 這些值也稱為列舉元素。注意最後的分號 不能少。例如,列出乙個星期有幾天 ...
巨集定義與巨集替換
一.c c 語言中使用巨集的主要目的主要有 3 個 1.提高 的可讀性 把用到的常量定義成有意義的名字 2.無需函式呼叫,執行效率高 對於一些簡單的操作,無需呼叫函式,雖然程式設計是強調模組化,但是函式呼叫時,需要保護現場和恢復現場。這些都需要耗時。對於複雜的操作來講,這些耗時可以不計,但是對於簡單...
巨集定義與巨集替換
一.c c 語言中使用巨集的主要目的主要有 3 個 1.提高 的可讀性 把用到的常量定義成有意義的名字 2.無需函式呼叫,執行效率高 對於一些簡單的操作,無需呼叫函式,雖然程式設計是強調模組化,但是函式呼叫時,需要保護現場和恢復現場。這些都需要耗時。對於複雜的操作來講,這些耗時可以不計,但是對於簡單...