Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C lua源代码问题,使用&引用;s_C_Lua - Fatal编程技术网

C lua源代码问题,使用&引用;s

C lua源代码问题,使用&引用;s,c,lua,C,Lua,这些天我在学习lua的源代码。我对luaS_newlstr(L),“s,(sizeof(s)/sizeof(char))-1中“s”的用法感到困惑 定义luaS_newliteral(L,s)(luaS_newlstr(L),“s,(sizeof(s)/sizeof(char))-1)) TString*luaS\u newlstr(lua\u State*L,const char*str,size\u t L){ if(l=(MAX_SIZE-sizeof(TString))/sizeof(c

这些天我在学习lua的源代码。我对luaS_newlstr(L),“s,(sizeof(s)/sizeof(char))-1中“s”的用法感到困惑

定义luaS_newliteral(L,s)(luaS_newlstr(L),“s,(sizeof(s)/sizeof(char))-1)) TString*luaS\u newlstr(lua\u State*L,const char*str,size\u t L){ if(l=(MAX_SIZE-sizeof(TString))/sizeof(char))) 卢阿穆图比格(L); ts=luaS_createlngstrobj(L,L); memcpy(getstr(ts),str,l*sizeof(char)); 返回ts; } }
在C语言中,仅仅将字符串文本放在一起就可以将它们连接起来,因此
“foo”“bar”“baz”
相当于
“foobarbaz”
,但是将字符串文本放在任何其他文本旁边,如
“foo”str
,是一个编译器错误。通过在宏中执行
“s
,他们确保宏仅在
s
是字符串文字而不是变量或其他东西时才起作用。

在C中,只需将字符串文字彼此相邻即可将它们连接起来,因此
“foo”“bar”“baz”
相当于
“foobarbaz”
,但是,将字符串文本放在任何其他文本旁边,例如
“foo”str
,是一个编译器错误。通过在宏中执行
“s
,他们确保宏仅在
s
是字符串文字而不是变量或其他东西时才工作。

我知道了,谢谢,:)我知道了,谢谢,:)
#define luaS_newliteral(L, s)   (luaS_newlstr(L, "" s, (sizeof(s)/sizeof(char))-1))

TString *luaS_newlstr (lua_State *L, const char *str, size_t l) {
  if (l <= LUAI_MAXSHORTLEN)  /* short string? */
    return internshrstr(L, str, l);
  else {
    TString *ts;
    if (unlikely(l >= (MAX_SIZE - sizeof(TString))/sizeof(char)))
      luaM_toobig(L);
    ts = luaS_createlngstrobj(L, l);
    memcpy(getstr(ts), str, l * sizeof(char));
    return ts;
  }
}