编译器指令(预处理指令)以 # 开头,位于行首(前面允许空白或注释块),不需要分号结尾。
编译源码时有一个预处理期,优先执行大部分指令,过后才会分析其他代码语句、表达式等等。
| 指令标识 | 简介 |
|---|---|
| #assert | 编译时断言 |
| #define | 宏定义 |
| #endinput#endscript | 脚本终点 |
| #error | 自设编译时报错 |
| #emit | 内联汇编 |
| #file | 伪造当前脚本文件地址 |
| #if#elseif#else#endif | 编译分支 |
| #include#tryinclude | 引用脚本、尝试引用脚本 |
| #line | 伪造当前行号 |
| #pragma | 编译指示 |
| #undef | 删除宏 |
一些常用指令示例:
// 引用核心文件
#include <amxmodx>
// 定义宏
#define PluginName "测试插件"
// 条件编译:根据 AMXX 版本选择不同版本号
#if (AMXX_VERSION_NUM < 183)
#define PluginVersion "1.0.0"
#elseif (AMXX_VERSION_NUM < 200)
#define PluginVersion "1.0.1"
#else
#endinput // 停止编译(通常用在inc而不是sma文件)
#endif
public plugin_init()
{
register_plugin(PluginName, PluginVersion, "作者");
}
其他指令如 #pragma、#emit 较为进阶,初学者可暂缓学习。