Q_DECL_EXPORT keyword meaning

Tahlil picture Tahlil · Dec 17, 2012 · Viewed 18.1k times · Source

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

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

Answer

Andrejs Cainikovs picture Andrejs Cainikovs · Dec 17, 2012

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.