Linderdaum引擎中奇怪的多个类名

Strange multiple class names in Linderdaum Engine

本文关键字:引擎 Linderdaum      更新时间:2023-10-16

我正在尝试使用Linderdam引擎,发现有很多奇怪的声明,比如:

class scriptfinal netexportable类名:public iObject

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

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

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

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

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

#define scriptfinal __declspec(dllimport)

获取:

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

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