簡體   English   中英

編譯計算字符串文字的時間連接

[英]Compile time concatenation of computed string literals

我們可以連接相鄰的字符串文字,如下所示:

puts( "ABC" "DEF" );

但是,當我嘗試執行此操作時,MSVC失敗並出現奇怪錯誤:

puts( ("ABC") ("DEF") );

這意味着我可以執行單個計算輸出字符串文字,如下所示:

puts( NUM_ELEMENTS>125?"WARNING":"OK" )

但我無法連接多個這些字符串文字輸出,例如:

#define SOME_SETTING 0x0B //I sometimes wish there were binary literals
#define BIT_STR(x,n) ((x>>n)&1?"1":"0")
#define BIT_STR4(x) BIT_STR(x,3) BIT_STR(x,2) BIT_STR(x,1) BIT_STR(x,0)

...

puts( "Initializing some hardware setting: " BIT_STR4(SOME_SETTING) );

編輯:所以我的問題是...什么是連接編譯時計算字符串文字的正確方法?

BIT_STR(SOME_SETTING, 3) ,舉一個例子,確實可以在運行時計算:它導致(0?"1":"0") ,這反過來導致指向常量字符串"0"的指針,而不是再到字符串文字。

字符串文字可以連接,常量字符串的常量指針不能。 這就是區別。

暫無
暫無

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

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