gpt4 book ai didi

计算字符串文字的编译时连接

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:05 25 4
gpt4 key购买 nike

我们可以像这样连接相邻的字符串文字:

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" 的指针,不再指向字符串文字。

字符串文字可以连接,指向常量字符串的常量指针不能。这就是区别。

关于计算字符串文字的编译时连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17597803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com