我正在尝试使用 Linderdaum 引擎,发现有许多奇怪的声明,例如:
类 scriptfinal netexportable ClassName: public iObject
这些奇怪的名字scriptfinal
和netexportable
宏。但是它们被定义为空的。为什么有人需要这种定义?
我正在尝试使用 Linderdaum 引擎,发现有许多奇怪的声明,例如:
类 scriptfinal netexportable ClassName: public iObject
这些奇怪的名字scriptfinal
和netexportable
宏。但是它们被定义为空的。为什么有人需要这种定义?
它们是空的,因此 C++ 编译器不会关心它们。
Linderdaum 引擎对 C++ 源进行预处理,以生成有关类的元信息。
这些宏最有可能被它们的预处理器用来为它们的脚本语言 ( scriptfinal
) 和 .NET 序列化代码 ( netexportable
) 生成信息。
例如,有人可能将 scriptfinal 宏设置为:
#define scriptfinal __declspec(dllimport)
要得到:
class __declspec(dllimport) ClassName: public iObject {};
由于 __declspec 是 Microsoft 特定的扩展,因此它通常用于可移植代码中的宏扩展。在为 Linux 环境编译时,宏是空的,因此__declspec
对编译器不可见,在 Windows 下它们将按上述定义。