AMXXPawn defined关键字

defined即是关键字,又是运算符。可在当前作用域内检查一个标识符是否已声明。

表达式语法:defined 标识符名称

这个表达式会在编译时返回1或0。在AMX Mod X 1.8.2以上版本中,该返回值带有bool标签。

若返回1,表示标识符已声明,若返回0,表示未声明。

这种表达式常用于决定是否将某段代码编译到amxx文件中。

示例1,避免用户重复引用同一个inc文件:

// 若已声明_amxmodx_included,执行#endinput指令,舍弃下面所有内容 #if defined _amxmodx_included #endinput #endif // 若下面的代码未被舍弃…… // 声明_amxmodx_included,下次引用当前文件会触发上面的#endinput指令 #define _amxmodx_included ......

示例2,选择是否编译某段代码:

#include <amxmodx> // 若当前版本的amxmodx.inc未声明MaxClients变量,那么手动声明这个变量 #if (!defined(MaxClients)) static MaxClients; #endif public plugin_precache() { // 若当前版本的amxmodx.inc含有MaxClients变量,必不可能等于0, // 既然等于0,说明是咱手动声明的,纠正它的值 if (!MaxClients) MaxClients = get_maxplayers(); }

注意事项: