【发布时间】:2010-07-28 03:20:52
【问题描述】:
我正在用 C99 开发一个嵌入式应用程序,该项目包含一些整数常量,定义如下:
#define LEVEL1 0x0000
#define LEVEL2 (LEVEL1 + 1)
从那时起,为了记录目的而跟踪这些值变得很有用,所以我想使用一个宏从上面的 评估 版本创建一个字符串文字。例如:
strncpy(str, STRING(LEVEL2), len);
理想情况下评估为
strncpy(str, "0x0001", len);
甚至
strncpy(str, "0001", len);
使用带有# 运算符的两阶段宏(如this question 所建议的那样)几乎可以工作。它评估为
strncpy(str, "(LEVEL1 + 1)", len);
我想避免使用运行时函数 - 因此我尝试使用宏解决方案。有什么建议吗?
【问题讨论】:
标签: string macros c99 literals expansion