C++ Ogre3D中类声明上的“OgreExport”的目的是什么?
查看Ogre3D源代码,我看到许多类声明如下:C++ Ogre3D中类声明上的“OgreExport”的目的是什么?,c++,class,declaration,C++,Class,Declaration,查看Ogre3D源代码,我看到许多类声明如下: class _OgreExport RenderTarget : public RenderSysAlloc 有人能帮我了解一下“\u OgreExport”在那里做什么吗?简短摘要 宏\u ogreeexport定义为有条件地将可见性状态应用于声明的类,它将扩展到不同平台上的不同实现特定属性 在*NIX相关平台下工作? 宏\u ogreeexport的定义可以在中找到,它在第行(和其他地方)中提到 如果定义了OGRE\u GCC\u可见性,
class _OgreExport RenderTarget : public RenderSysAlloc
有人能帮我了解一下“\u OgreExport”在那里做什么吗?简短摘要
宏\u ogreeexport
定义为有条件地将可见性状态应用于声明的类,它将扩展到不同平台上的不同实现特定属性
在
*NIX
相关平台下工作?
宏\u ogreeexport
的定义可以在中找到,它在第行(和其他地方)中提到
如果定义了
OGRE\u GCC\u可见性
,它将扩展为\u属性(可见性(“默认”)
visibility
是一个特定于gcc的属性,可以在上的gcc.gnu.org上的wiki中阅读。该页面以非常清晰、易于理解的方式总结了它
简而言之,引用上面的链接页面,它说:
-
< > >强>为什么新的C++可见性支持如此有用?< /强>
简单地说,它隐藏了大部分以前(不必要地)公开的ELF符号
WINDOWS呢? 在windows上,to
\uu declspec(…)
,其应用原因与gcc中关于可见性的描述类似
246 // Enable GCC symbol visibility
247 # if defined( OGRE_GCC_VISIBILITY )
248 # define _OgreExport __attribute__ ((visibility("default")))
249 # define _OgrePrivate __attribute__ ((visibility("hidden")))
250 # else
251 # define _OgreExport
252 # define _OgrePrivate
253 # endif