我试图理解一些具有以下类语法的C++代码:
class Q_MONKEY_EXPORT BasePlugin : public QObject
{
// some code comes here
};
Run Code Online (Sandbox Code Playgroud)
我无法理解语法class Q_MONKEY_EXPORT BasePlugin.对我来说,看起来这个班级有两个名字.这种语法究竟在C++中意味着什么?
Q_MONKEY_EXPORT很可能是某个地方的#define.定义有时需要的,例如当类在库中时,需要在从其他地方包含头文件时导出.在这种情况下,define会解析为类似的东西 __declspec(dllexport) (确切的语法将取决于您使用的工具).
这很可能是一个预处理器指令,告诉编译器要导出符号.
它可能定义为:
#define Q_MONKEY_EXPORT _declspec(dllexport)
Run Code Online (Sandbox Code Playgroud)
这将导致您的类被导出到dll.
在编制之前,完整的声明将扩展到:
class _declspec(dllimport) BasePlugin : public QObject
{
// some code comes here
};
Run Code Online (Sandbox Code Playgroud)
编辑:
正如David Heffernan指出的那样,这些宏通常用于让编译器知道它是否需要导入或导出符号.通常定义dllimport为外部模块和dllexport构建模块时.我怀疑是这种情况,因为名称建议导出,但最好检查文档或实际去定义.
| 归档时间: |
|
| 查看次数: |
2400 次 |
| 最近记录: |