C++:宏扩展解释

C++: macro expansion explanation

我正在阅读一个 C++ 头文件,其中写道:

 class CLASSEXPORT skExecutable : {.....}

有评论说CLASSEXPORT是宏展开然后我找到了CLASSEXPORT定义的地方。

 #define CLASSEXPORT

仅此而已..我对此感到困惑..CLASSEXPORT在这个意义上代表什么?以及如何理解class skExecutable?

在你的情况下,CLASSEXPORT 被扩展为空(可能是因为不需要将其扩展为在你的确切配置中有意义的东西),所以你的 class 将只是一个 class skExecutable {<...>};。这种方法通常用于 import/export 指令,例如在以下代码片段中,将根据是否定义 COMPILING_DLL 宏放置适当的指令:

#if COMPILING_DLL
    #define DLLEXPORT __declspec(dllexport)
#else
    #define DLLEXPORT __declspec(dllimport)
#endif

class DLLEXPORT MyClass
{
};

只是为了清理一些东西:CLASSEXPORT 是一个 宏扩展 是一个过程,在编译之前执行,在此期间所有宏都被替换为它们定义的内容。

在你的情况下,我怀疑 CLASSEXPORT 允许所有以这种方式声明的 类 在将来需要时导出到某种共享库。然后 CLASSEXPORT 将被定义为

#define CLASSEXPORT __declspec(dllexport) 

并且您可以直接从共享库中使用 skExecutable