2

我知道在 C++ 中,类以class childClass : public parentClass, 和类似变体的形式继承。但是,我正在查看 SFML(一个 C++ 游戏编程库)头文件,我发现了这个:

namespace sf
 {
   ...
   class SFML_API Drawable
   {
   public :
    ...

我对这在 C++ 语法方面的含义感到困惑。类名不能包含空格,并且没有冒号或任何其他符号。这个语法的含义是什么?

4

1 回答 1

2

按照惯例,像这样全部大写的标识符通常是预处理器宏常量

鉴于这一事实,如果您搜索其他标题,您可能会发现如下行:

#define SFML_API __declspec(dllexport)

在我自己安装的 SFML 2.1 中,我在 Config.hpp 中找到了这些行:

#define SFML_API_EXPORT __declspec(dllexport)
// ... later...
#define SFML_API_EXPORT __attribute__ ((__visibility__ ("default")))

这个__declspec关键字告诉 Windows 上的编译器后面的声明将被视为共享库中的导出符号。类似地,该__visibility__属性告诉 GCC 兼容的编译器该符号在库外是可见的。这使得应用程序可以链接到动态/共享库并使用其代码。

于 2013-11-06T20:03:33.303 回答