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
。
我正在阅读一个 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
。