Q_DECL_EXPORT keyword meaning

99封情书 提交于 2019-12-21 07:01:31

问题


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

What does this Q_DECL_EXPORT before int main(...) means?


回答1:


Excerpt from QT docs:

Depending on your target platform, Qt provides special macros that contain the necessary definitions:

  • Q_DECL_EXPORT must be added to the declarations of symbols used when compiling a shared library.
  • Q_DECL_IMPORT must be added to the declarations of symbols used when compiling a client that uses the shared library.

I haven't check the QT code, but most likely this macro will do following:

#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) and __declspec(dllexport) tells the linker to import and export (respectively) a symbol from or to a DLL. This is Windows specific.

In your particular case this macro probably could be removed, since main() most likely is not part of a library.




回答2:


Its not a keyword, its a macro to encapsulate the different compiler specific keywords to declare a function as being exported.

See also Q_DECL_EXPORT and Creating Shared Libraries.

It is usually used with libraries to define those functions which need to be exported from the library, in order to be imported ("used") by other libraries or by executables.

I have not seen this with a main function so far, but that could be a blackberry specific thing. On the other hand, this tutorial does not use the macro with the main() function either, so it can probably be removed.



来源:https://stackoverflow.com/questions/13911387/q-decl-export-keyword-meaning

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!