预处理器中字符串字面量与宏的拼接可行性问询
预处理器阶段拼接字符串字面量的问题
我想通过多个字符串字面量与宏定义出一个单一的字符串字面量。我知道编译器会自动拼接相邻的字符串字面量,但这不是我想要的——我需要在预处理器阶段就生成完整的单一字符串,而非编译阶段才合并的多个相邻字符串片段。
示例代码1
#define A 1 #define B 2 #define STR1 "Up\n" #A "\n" #B "\n" #define STR2 "Down\n" #B "\n" #A "\n" char* strings[] = { STR1, STR2 };
我期望在IDE中查看STR1的宏展开结果为"Up\n1\n2\n",而非"Up\n" "1" "\n" "2" "\n"。
示例代码2(宏拼接数字的可行案例)
#define CON1(a,b) a ## b #define CON2(a,b) CON1(a,b) #define STR1 CON2(A,B)
这个例子中,IDE里STR1的展开结果是12,但加入字符串字面量后,无法实现类似的预处理器拼接效果。
核心问题
能否在预处理器中将字符串字面量与宏拼接为单一完整的字符串字面量?
最终更新
查阅大量相关问答后,我认为答案简单却令人失望:预处理器中无法拼接字符串字面量,加入宏也无济于事,只会混淆问题。若无人反驳,我后续将删除此问题。
内容的提问来源于stack exchange,提问作者Maple
相关产品推荐
相关产品推荐

