我正在尝试使用Linderdaum引擎,发现有很多奇怪的声明,比如:
iObject类脚本最终网络可导出ClassName:公共脚本
这些奇怪的名字scriptfinal和netexportable都是宏。但是它们被定义为空的。为什么有人需要这样的定义?
发布于 2012-07-24 17:46:37
它们是空的,所以C++编译器不会关心它们。
Linderdaum引擎对C++源代码进行预处理,以便生成关于类的元信息。
这些宏最有可能被它们的预处理器用来为它们的脚本语言(scriptfinal)和.NET序列化代码(netexportable)生成信息。
发布于 2012-07-24 16:04:47
例如,有人可能会将scriptfinal宏设置为:
#define scriptfinal __declspec(dllimport)要获得以下信息:
class __declspec(dllimport) ClassName: public iObject {};由于__declspec是微软特定的扩展,因此通常在可移植代码中用于宏扩展。在Linux环境下编译时,宏是空的,因此__declspec对于编译器是不可见的,而在Windows下,它们将按照上面的方式定义。
https://stackoverflow.com/questions/11626575
复制相似问题