Q_DECL_EXPORT int main(int argc, char **argv)
Q_DECL_EXPORT
之前int main(...)
的含义是什么?
答案 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_EXPORT
和Creating Shared Libraries。
它通常与库一起用于定义需要从库中导出的那些函数,以便由其他库或可执行文件导入(“使用”)。
到目前为止,我还没有看到main
函数,但这可能是黑莓特有的。另一方面,此tutorial也不使用带有main()
函数的宏,因此可能会将其删除。