我有這#define
語句在遺留代碼我正在檢查C。奇怪的#define聲明,無法理解它擴展的內容
#define STEP(x) case x: STEP ## x : WPAN_Startup_Step = x;
這是一個在很大的交換機狀態機中替換個案的宏。 我無法理解這個宏中發生了什麼。它擴展到了什麼?
我有這#define
語句在遺留代碼我正在檢查C。奇怪的#define聲明,無法理解它擴展的內容
#define STEP(x) case x: STEP ## x : WPAN_Startup_Step = x;
這是一個在很大的交換機狀態機中替換個案的宏。 我無法理解這個宏中發生了什麼。它擴展到了什麼?
##
做了拼接,這意味着其結果將是這樣的:
STEP(1)
case 1: STEP1: WPAN_Startup_Step = 1;
或另外一個例子:
STEP(v)
case v: STEPv: WPAN_Startup_Step = v;
該宏不做出太大的意義對我來說,因爲它會生成x: STEPx:
也許一個用法示例會澄清這一點。
,如果你想看到宏使用的擴展:gcc -E program.c
也是一個很好的地方,瞭解宏:http://gcc.gnu.org/onlinedocs/cpp/Macros.html
除了步驟(x),有一個'#定義STEP'地方? – Chowlett