Q_DECL_EXPORT keyword meaning

后端 未结 2 1903
故里飘歌
故里飘歌 2021-02-18 21:25

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

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

相关标签:
2条回答
  • 2021-02-18 22:08

    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.

    0 讨论(0)
  • 2021-02-18 22:13

    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.

    0 讨论(0)
提交回复
热议问题