SonolusHaniwa
  • 1. 概述
  • 2. ハニプレ
  • 3. ユメステ
  • 4. Stellarity
  • 5. Phigros
  • 首页

    • 1. 概述
  • 玩家

    • 2. 安装服务
    • 3. 配置文件标准
    • 4. 服务使用方法
  • 开发者

    • 5. 自定义搜索函数
    • 6. 自定义资源创建接口
    • 7. 插件开发标准
  • 其他

    • 8. 更新日志
    • 9. 关于 srp 资源包
  • 1. 搭建开发环境
  • 2. Sonolus 基础
  • 3. 配置项目信息
  • 4. 基本数据类型
  • 5. 函数与语句块
  • 6. 注意事项
  • 1. 游玩模式基础
  • 1. 概述
  • 2. ハニプレ
  • 3. ユメステ
  • 4. Stellarity
  • 5. Phigros
  • 首页

    • 1. 概述
  • 玩家

    • 2. 安装服务
    • 3. 配置文件标准
    • 4. 服务使用方法
  • 开发者

    • 5. 自定义搜索函数
    • 6. 自定义资源创建接口
    • 7. 插件开发标准
  • 其他

    • 8. 更新日志
    • 9. 关于 srp 资源包
  • 1. 搭建开发环境
  • 2. Sonolus 基础
  • 3. 配置项目信息
  • 4. 基本数据类型
  • 5. 函数与语句块
  • 6. 注意事项
  • 1. 游玩模式基础
  • 基础知识

    • 1. 搭建开发环境
    • 2. Sonolus 基础
    • 3. 配置项目信息
    • 4. 基本数据类型
    • 5. 函数与语句块
    • 6. 注意事项
  • 游玩模式

    • 1. 游玩模式基础

注意事项

解释器部分

  • 不可使用 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++ 报错时只返回少量必要的编译错误信息,这使得查错难度大大降低。

最近更新:: 2025/4/27 15:17
Contributors: LittleYang0531
Prev
5. 函数与语句块