Q_DECL_EXPORT关键字含义

时间:2012-12-17 09:25:53

标签: c++ blackberry-10

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

Q_DECL_EXPORT之前int main(...)的含义是什么?

2 个答案:

答案 0 :(得分:19)

摘自QT docs

  

根据您的目标平台,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

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

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

答案 1 :(得分:6)

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

另请参阅Q_DECL_EXPORTCreating Shared Libraries

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

到目前为止,我还没有看到main函数,但这可能是黑莓特有的。另一方面,此tutorial也不使用带有main()函数的宏,因此可能会将其删除。