What does this kind of C++ class declaration mean?

后端 未结 3 2051
野性不改
野性不改 2021-01-24 07:08

I downloaded Ogre3D source code, and found this kind of class declaration:

class _OgreExport TimeIndex
{ ...

I know \"TimeIndex\" is the class

相关标签:
3条回答
  • 2021-01-24 07:16

    _OgreExport is a preprocessor directive that expands to either

    __declspec(dllimport)
    

    when the file is included outside its module or

    __declspec(dllexport)
    

    otherwise. Under Windows, you have to specify which classes/methods you want exported/imported so that they can be used across binaries.

    Technically, as James pointed out in the comments, the macro name is illegal, since it begins with an underscore. These names are reserved for the implementation.

    0 讨论(0)
  • 2021-01-24 07:26

    It's a macro that expands to something like __declspec(dllexport), marking the class to be exported by the linker.

    0 讨论(0)
  • 2021-01-24 07:35

    see this code from OgrePlatform.h:138

    #       if defined( OGRE_NONCLIENT_BUILD )
    #           define _OgreExport __declspec( dllexport )
    #       else
    #           if defined( __MINGW32__ )
    #               define _OgreExport
    #           else
    #               define _OgreExport __declspec( dllimport )
    #           endif
    #       endif
    #       define _OgrePrivate
    #   endif
    

    I highly recommend using google code search if you have further questions of this type. Just enter, e.g., _OgreExport and see how other used it or how it is defined.

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