注意事项
解释器部分
- 不可使用
VarType VarName(Params);
的方式初始化变量,请切换为使用VarType VarName = VarType(Params);
,否则会被识别为函数定义导致后期编译错误。 - 不可使用
for (VarType var : VarName)
的方式遍历,请切换为使用for (VarTypeIterator it = VarName.begin(); it != VarName.end(); it++)
。 - 不建议使用
(VarType)Var
的方式强制转换变量类型,请切换为使用VarType(Var)
。 - 不建议在函数中间使用预处理指令,否则解释器会无法识别后续的指令导致编译错误或无法正常运行。
- 在函数命名时,如果与原生库函数重名,解释器可能会生成无法编译的代码。
- 不建议使用原生指针类型,否则解释器可能会生成无法编译的代码。
- 类/结构体的构造/析构/拷贝/移动函数定义前需加上
Constructor/Destructor/Constructor/Constructor
补全与正常函数定义相比缺少的返回值类型,否则解释器会将其识别为函数调用。 - 如果需要暂时禁用解释器功能,请使用
DISABLE_INTERPRETER
宏定义。 - 如果有需要在 IDE 里出现而不在编译时出现的代码,请使用
COMPILE_RUNTIME
宏定义。
库函数部分
- 禁用
throw
!禁用throw
!禁用throw
!请使用SonolusAssert
! - 如果需要禁用打包皮肤功能,请使用
DISABLE_PACK_SKIN
宏定义。 - 如果需要禁用打包音效功能,请使用
DISABLE_PACK_EFFECT
宏定义。
编写建议
不建议一次性编写很长一段代码然后才编译查错。解释器本身不具有编译功能,因此无法找出代码中的编译错误,并且解释器生成的代码几乎不可读,这导致了当 g++ 返回大量编译错误信息时查错难度大大增加。
一次写一小段代码即编译可以在 g++ 报错时只返回少量必要的编译错误信息,这使得查错难度大大降低。