3

我正在尝试使用 Linderdaum 引擎,发现有许多奇怪的声明,例如:

类 scriptfinal netexportable ClassName: public iObject

这些奇怪的名字scriptfinalnetexportable宏。但是它们被定义为空的。为什么有人需要这种定义?

4

2 回答 2

3

它们是空的,因此 C++ 编译器不会关心它们。

Linderdaum 引擎对 C++ 源进行预处理,以生成有关类的元信息。

这些宏最有可能被它们的预处理器用来为它们的脚本语言 ( scriptfinal) 和 .NET 序列化代码 ( netexportable) 生成信息。

于 2012-07-24T09:46:37.453 回答
2

例如,有人可能将 scriptfinal 宏设置为:

#define scriptfinal __declspec(dllimport)

要得到:

class __declspec(dllimport) ClassName: public iObject {};

由于 __declspec 是 Microsoft 特定的扩展,因此它通常用于可移植代码中的宏扩展。在为 Linux 环境编译时,宏是空的,因此__declspec对编译器不可见,在 Windows 下它们将按上述定义。

于 2012-07-24T08:04:46.910 回答