[英]Space in Function Call Parameter List (C++)
我在正在使用的C ++項目中遇到了一些語法,但不知道該怎么做。 編譯器不會對此引發任何錯誤:
lua_pushstring(L,"swig_runtime_data_type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME);
注意[我認為是]功能參數之間的空格。
lua_pushstring
的函數定義為
LUA_API const char *(lua_pushstring) (lua_State *L, const char *s);
SWIG_RUNTIME_VERSION
是#define
等於"4"
SWIG_TYPE_TABLE_NAME
在以下塊中定義:
#ifdef SWIG_TYPE_TABLE
# define SWIG_QUOTE_STRING(x) #x
# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
#else
# define SWIG_TYPE_TABLE_NAME
#endif
誰能解釋這是怎么回事?
為了進一步參考,該代碼在GitHub上的swig項目中使用: luarun.swg:353和luarun.swg:364 。
靜態字符串隱藏。 “ Hello”“ World”與“ Hello World”相同。
常量字符串組合在一起
以下代碼產生的輸出等於參數列表中的所有三個字符串。
#include <iostream>
void f(const char* s) {
std::cerr << s << std::endl;
}
int main() {
f("sksksk" "jksjksj" "sjksjks");
}
C ++(和C)將自動連接相鄰的字符串文字。 所以
std::cout << "Hello " "World" << std::endl;
將輸出“ Hello World”。 但是,這僅適用於文字 ,不適用於變量:
std::string a = "Hello ", b = "World";
std::string c = a b //error, use a + b
為此,您可以使用std::string
的operator+
(或strcat
,但如果可以的話,請避免這樣做)。
當我們有一個很長的字符串文字不適合一行時,此功能主要有用:
process_string("The quick brown fox jumps over "
"the lazy dog");
如示例中所示,它對預處理指令也很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.