You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入式C++11中如何编译时拼接字面字符串与数值宏?

编译时合并字面字符串与非字符串宏(嵌入式C++11环境)

在嵌入式C++11环境中,若需将字面字符串与数值宏合并为单个字面字符串,且要求纯编译时解决方案(避免运行时开销、节省资源),可通过预编译器的字符串化宏实现。

示例代码

// 定义数值宏
#define SOC 12

// 字符串化辅助宏(两层宏用于先展开宏再字符串化)
#define STRINGIFY(x) #x
#define EXPAND_AND_STRINGIFY(x) STRINGIFY(x)

// 编译时合并字符串与宏
printf("This is the default SoC:" EXPAND_AND_STRINGIFY(SOC) "!");

关键说明

  • 必须使用两层宏:直接使用STRINGIFY(SOC)会将宏名本身字符串化为"SOC",而两层宏EXPAND_AND_STRINGIFY会先将SOC展开为12,再字符串化为"12"。
  • 预编译器会在编译阶段自动拼接相邻的字面字符串,最终生成的二进制中是完整的单个字符串"This is the default SoC:12!",完全没有运行时拼接操作,符合嵌入式环境资源受限的需求。

内容的提问来源于stack exchange,提问作者Stéphane de Luca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:01:00