c - 在另一个宏中使用字符串宏
问题描述
如何在 C 中的字符串宏中使用另一个宏?
我有这个:
#define MAX_OPERATION_COUNT 10
#define MSG_TOO_MANY_OPERATIONS "Too many operations! Only the first 10 were applied."
但我希望第二个宏使用第一个宏的值。例如,在 Java 中,我会有类似的东西:
public static final int MAX_OPERATION_COUNT = 10;
public static final String MSG_TOO_MANY_OPERATIONS = "Too many operations! Only the first " + MAX_OPERATION_COUNT + " were applied.";
有没有办法在 C 中做类似的事情?
编辑:这个问题的解决方案结果与这个问题 的解决方案非常相似,但我相信问题本身是完全不同的,应该分开处理。
解决方案
通常处理 printf 风格的格式会更容易,比如"Too many operations! Only the first %u were applied"
. 但是,如果您真的想进行字符串替换,则必须执行两次:
#define STR(x) STR2(x)
#define STR2(x) #x
#define MAX_OPERATION_COUNT 10
#define MSG_TOO_MANY_OPERATIONS "Too many operations! Only the first " STR(MAX_OPERATION_COUNT) " were applied."
推荐阅读
- c - 使用 fflush(stdout) 和不使用它有什么不同
- bash - 如何使用 sed 命令在 rc.local 文件中插入一行
- go - 如何使用 switch-case 避免不可访问的代码?
- javascript - 单击按钮 2 时如何从按钮 1 中删除类 - Vanilla JS
- javascript - 折线图不显示
- reactjs - GENERATE_SOURCEMAP=false 不在heroku上工作
- reactjs - 为什么我的付款按钮不显示弹出窗口?(条纹)
- git - 提交删除后如何取回文件?
- graphviz - 我可以让 graphviz 绘制流程图终端形状吗?
- java - 为什么 CompletableFuture 没有按顺序执行?