#if 常量表达式
#endinput
#endif
#endinput和#endscript指令是完全相同的.用于停止编译下文.
因此,需要配合#if #endif条件指令使用.在满足某种条件时,停止编译下文.
该指令通常用于防止重复引用同一个文件(避免重复自定义符号).
示例(假设这个文件是scripting/include/my_plugin.incinc文件):
#if (defined(_my_plugin_included)) // 如果已定义了符号名_my_plugin_included
#endinput // 停止输入下文(下文全部舍弃),不要再重复定义_my_plugin_included和gValue了
#endif // 表示#if条件指令的终点
#define _my_plugin_included // 定义符号名_my_plugin_included
stock gValue = 10; // 声明备用的全局变量gValue,定义它的值为10
示例(假设这个文件是scripting/my_plugin.sma源码文件):
#include amxmodx
#include my_plugin // 引用scripting/include/my_plugin.inc文件中所有内容到此处
#include my_plugin // 再次引用scripting/include/my_plugin.inc文件中所有内容到此处
public plugin_init()
{
register_plugin("测试插件", "1.0.0", "插件作者");
server_print("[AMXX]gValue = %d", gValue);
}
若删除scripting/include/my_plugin.inc文件中的#endinput指令,编译scripting/my_plugin.sma文件会触发报错.
这是因为引用两次,等于定义了两个拥有相同作用域终点的同名符号:
...\scripting\include\my_plugin.inc(6) : error 021: symbol already defined: "gValue"
有了#endinput或#endscript指令,便能避免一个文件被重复引用时所引发的各种问题.