2010-08-18 27 views
0

我想了解一個明確讀取dll的C++代碼。 是否有人知道下面的行#define LFE_API(name) LFE_##name name實際上是如何工作的? 我明白#define LFE_API(name) LFE_##name,但對最後的「名稱」感到困惑。具有3個項的變量宏

struct Interface 
{ 
    # ifdef LFE_API 
    #  error You can't define LFE_API before. 
    # else 
    #  define LFE_API(name) LFE_##name name 
       LFE_API(Init); 
       LFE_API(Close); 
       LFE_API(GetProperty); 
    #  undef LFE_API 
    # endif 
}; 

回答

1

由於宏的第一部分(LFE _ ##名)只是串接兩個部分,以LFE_API呼叫創建一個名爲名稱與類型LFE ##名變量,如:

LFE_API(Init)擴展爲LFE_Init Init;

+0

謝謝,很好的回答:) – Gooly 2010-08-18 22:54:03

1
LFE_Init Init; 

運行克++ -E上代碼,以查看什麼被產生。結構元素需要一個類型和一個名稱。

+0

謝謝,我沒有意識到這是一個類型和名稱。 – Gooly 2010-08-18 22:56:04