我正在用 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);
我想避免使用运行时函数 - 因此我尝试使用宏解决方案。建议?