stock关键字可用于声明、定义全局变量,点击查看:变量指南
代码示例:
#include <amxmodx>
// 声明、定义仅当前插件可用的全局变量,若变量未被使用,将会被舍弃,不触发编译警告
stock gDataVal1 = 1024;
// 声明、定义仅当前插件可用的全局变量,若变量未被使用,将触发编译警告:标识符"gDataVal2"从未被使用
new gDataVal2 = 1024;
public plugin_init()
{
// 不使用gDataVal1和gDataVal2变量,gDataVal2会触发警告,gDataVal1不会
}
单独使用stock声明全局变量几乎与new相同,仅多出一个’备用‘特性。
用stock声明的变量,可称呼为'备用变量'。
备用变量的设计初衷是按需编译,方便inc文件的设计,确保未使用的变量不会增加插件的文件体积。
通常是我们做好一个模块化插件后,创建一个inc文件,声明一些与插件内容相关的备用变量,让第三方插件有选择的使用。
例如用备用变量储存你的插件名称、模块名称、插件版本、作者名称等等。
通常不应该声明备用单值变量,对于没有变化需求的单值,声明常量才是更优先的选择。
虽然amxconst.inc文件中有同时使用public stock const声明的公共备用只读单值变量,随时更改数值,
但那是amxmodx核心模块用特殊手段(后门)制作的共享备用公共变量(amxmodx公共变量)。
我们用amxx插件无法制作amxx插件公共变量或amxmodx模块公共变量,详情点击:public变量指南
至少在AMX Mod X 1.10.0和旧版本中无法做到。
| 声明说明符组合 | 全局变量特性 | 批注 |
|---|---|---|
| stock | 储存在数据段 插件私有 备用 |
|
| new stock | 储存在数据段(重复) 插件私有(重复) 备用 |
建议删除意义重复的new |
| public stock stock public |
储存在数据段(重复) 插件私有(重复) 生成AMX平台公共变量 |
语义冲突 建议删除失去备用意义的stock |
| stock static static stock |
储存在数据段(重复) 文件私有(覆盖插件私有) 备用 |
|
| stock const | 储存在数据段 插件私有 只读 备用 |
|
| new public stock new stock public |
储存在数据段(重复) 插件私有(重复) 生成AMX平台公共变量 |
语义冲突 建议删除失去备用意义的stock 建议删除意义重复的new |
| new static stock new stock static |
储存在数据段(重复) 文件私有(覆盖插件私有) 备用 |
建议删除无意义的new |
| new stock const new const stock |
储存在数据段(重复) 插件私有(重复) 只读 备用 |
建议删除意义重复的new |
| public stock const public const stock stock public const stock const public |
储存在数据段(重复) 插件私有(重复) 生成AMX平台公共变量 只读 |
语义冲突 建议删除失去备用意义的stock const只对私有变量有效 |
| static stock const static const stock stock static const stock const static |
储存在数据段(重复) 文件私有(覆盖插件私有) 备用 只读 |
|
| new public stock const new public const stock new stock public const new stock const public new const public stock new const stock public |
储存在数据段(重复) 插件私有(重复) 生成AMX平台公共变量 只读 |
语义冲突 建议删除意义重复的new 建议删除失去备用意义的stock const只对私有变量有效 组合时const不能放最前面 |
| new static stock const new static const stock new stock static const new stock const static new const static stock new const stock static |
储存在数据段(重复) 文件私有(覆盖插件私有) 备用 只读 |
建议删除无意义的new 组合时const不能放最前面 |
stock关键字可用于声明、定义文件私有备用函数和插件私有备用函数。
备用函数的设计初衷是按需编译,方便函数库(inc文件)的设计,确保未使用的函数不会增加插件的文件体积。
若该函数未被使用,编译器不会检查函数内部语法错误,不会触发未使用警告,直接舍弃。
代码示例:
#include <amxmodx>
// 外部模块、插件以及当前插件所有文件皆可使用的函数
public plugin_init()
{
// 不调用备用函数,则该函数会被舍弃
//TestFunc();
}
// 声明、定义仅当前插件可用的备用函数,虽然内部写了一些乱七八糟的错误代码,但只要不使用这个函数就没事
stock TestFunc()
{
@@@^&*() (^_^)
return (T_T)
}