2010-08-18 62 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