Q_DECL_EXPORT关键字含义

Tah*_*lil 16 c++ blackberry-10

Q_DECL_EXPORT int main(int argc, char **argv)

这是什么Q_DECL_EXPORT之前int main(...)手段?

And*_*ovs 20

摘自QT文档:

根据您的目标平台,Qt提供了包含必要定义的特殊宏:

  • 必须将Q_DECL_EXPORT添加到编译共享库时使用的符号声明中.
  • 必须将Q_DECL_IMPORT添加到编译使用共享库的客户端时使用的符号声明中.

我没有检查QT代码,但很可能这个宏将执行以下操作:

#ifdef _WIN32 || _WIN64
    #define Q_DECL_EXPORT __declspec(dllexport)
    #define Q_DECL_IMPORT __declspec(dllimport)
#else
    #define Q_DECL_EXPORT
    #define Q_DECL_IMPORT
#endif
Run Code Online (Sandbox Code Playgroud)

__declspec(dllimport)__declspec(dllexport)告诉链接器从(或分别)导入和导出DLL的符号.这是Windows特定的.

在您的特定情况下,可能会删除此宏,因为main()很可能不是库的一部分.


And*_*ter 6

它不是一个关键字,它是一个宏来封装不同的编译器特定关键字来声明一个函数exported.

另请参阅Q_DECL_EXPORT创建共享库.

它通常与库一起用于定义需要从库中导出的那些函数,以便由其他库或可执行文件导入("使用").

main到目前为止,我还没有看到这个函数,但这可能是黑莓特有的东西.另一方面,本教程也不使用具有该main()函数的宏,因此可能会将其删除.