Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Ogre3D中类声明上的“OgreExport”的目的是什么?_C++_Class_Declaration - Fatal编程技术网

C++ Ogre3D中类声明上的“OgreExport”的目的是什么?

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可见性,

查看Ogre3D源代码,我看到许多类声明如下:

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中关于可见性的描述类似


谢谢Bart,这正是我要找的。我想它只在windows上…@texasbruce不,请看我的答案;它不再只与windows相关了。@JohnSavage有关宏的详细说明,请看我(更新的)答案。
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