我知道在 C++ 中,类以class childClass : public parentClass
, 和类似变体的形式继承。但是,我正在查看 SFML(一个 C++ 游戏编程库)头文件,我发现了这个:
namespace sf
{
...
class SFML_API Drawable
{
public :
...
我对这在 C++ 语法方面的含义感到困惑。类名不能包含空格,并且没有冒号或任何其他符号。这个语法的含义是什么?
按照惯例,像这样全部大写的标识符通常是预处理器宏或常量。
鉴于这一事实,如果您搜索其他标题,您可能会发现如下行:
#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 兼容的编译器该符号在库外是可见的。这使得应用程序可以链接到动态/共享库并使用其代码。