AMXXPawn编译器指令#endinput #endscript

#endinput停止输入和#endscript停止脚本指令使用方法:

#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指令,便能避免一个文件被重复引用时所引发的各种问题.