什么';这个c++;片段? 多年的java、javascript、python,我不仅忘记C++,而且混淆了语法。
带2D数组的lualibs init?luaL_reg是一种类型,但显然不是数组什么';这个c++;片段? 多年的java、javascript、python,我不仅忘记C++,而且混淆了语法。,c++,C++,带2D数组的lualibs init?luaL_reg是一种类型,但显然不是数组 const luaL_reg *lib; for (lib = lualibs; lib->func != NULL; lib++) { lib->func(l); lua_settop(l, 0); } luaL_reg是一个包含两个元素的struct,这是谷歌快速搜索的结果 第一个代码片段是创建luaL_regstructs的数组: 第一个结构用两个值初始化:{“base”,l
const luaL_reg *lib;
for (lib = lualibs; lib->func != NULL; lib++)
{
lib->func(l);
lua_settop(l, 0);
}
luaL_reg
是一个包含两个元素的struct
,这是谷歌快速搜索的结果
第一个代码片段是创建luaL_reg
struct
s的数组:
- 第一个
用两个值初始化:结构
{“base”,luaopen_base}
- 数组中的第二个
luaL_reg
设置为:struct
{NULL,NULL}
第二个例子现在应该是不言自明的
lib
是指向luaL\u reg
struct
luaL\u reg
的指针,可能如下所示
typedef struct luaL_reg_t {
char const * const name;
void(*func)(< type_of_<l> >);
} luaL_reg;
在初始化数组成员时,也可以使用前面代码段中显示的语法。在下面的代码片段中,const luaL_reg实例数组被设置为包含两个对象,第一个对象具有
名称=“base”
和func
设置为luaopen_base
把事情弄清楚;下面的不是一个2D数组,而是一个const luaL_reg
数组,使用{}
来设置每个实例的成员
static const luaL_reg lualibs[] =
{
{ "base", luaopen_base },
{ NULL, NULL }
};
最后一个元素用于简化数组的迭代,将两个成员都设置为NULL
可以很容易地看到我们何时到达最后一个元素
接下来的代码段中的循环利用了这一点。只要成员func
不等于NULL
我们就没有到达数组的末尾
for (lib = lualibs; lib->func != NULL; lib++) {
lib->func(l);
lua_settop(l, 0);
}
static const luaL_reg lualibs[] =
{
{ "base", luaopen_base },
{ NULL, NULL }
};
for (lib = lualibs; lib->func != NULL; lib++) {
lib->func(l);
lua_settop(l, 0);
}