[英]What does this kind of C++ class declaration mean?
我下載了Ogre3D源代碼,並發現了這種類聲明:
class _OgreExport TimeIndex
{ ...
我知道“ TimeIndex”是類名,但是中間的“ _OgreExport”是什么? CPP參考不包括此類的類聲明形式。 這是什么?
_OgreExport
是一個預處理器指令,可擴展為
__declspec(dllimport)
文件包含在其模塊之外時
__declspec(dllexport)
除此以外。 在Windows下,您必須指定要導出/導入的類/方法,以便可以在二進制文件中使用它們。
從技術上講,正如James在評論中指出的那樣,宏名稱是非法的,因為它以下划線開頭。 這些名稱是為實現保留的。
從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
如果您還有其他此類問題,我強烈建議您使用Google代碼搜索 。 只需輸入_OgreExport,然后查看其他人如何使用它或如何對其進行定義。
它是一個宏,它擴展為__declspec(dllexport)
之類的東西,標記要由鏈接器導出的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.