簡體   English   中英

函數調用參數列表(C ++)中的空格

[英]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:353luarun.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::stringoperator+ (或strcat ,但如果可以的話,請避免這樣做)。

當我們有一個很長的字符串文字不適合一行時,此功能主要有用:

process_string("The quick brown fox jumps over "
               "the lazy dog");

如示例中所示,它對預處理指令也很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM