我定义了一些这样的宏:
#define ABC '1'
#define DEF '2'
#define XYZ '3'
我还需要根据其值输出宏字符串,如下所示:
static const char* get_event_string(unsigned char event)
{
switch (event) {
case '1':
return "ABC";
case '2':
return "DEF";
case '3':
return "XYZ";
}
}
有什么简单的方法吗?
最佳答案
请务必先查看这个很好的答案:How to convert enum names to string in c
<小时/>如果这不能满足您的需求,请根据各种常量计算索引。
如果常量 ABC,DEF,XYZ 是唯一的、任意的(例如可能不是连续的)并且常量计数固定 (3),则可以使用公式并让编译器进行优化。
const char* get_event_string(unsigned char event) {
int index = (event == ABC)*1
| (event == DEF)*2
| (event == XYZ)*3;
static const char *event_string[4] = { "None", "ABC", "DEF", "XYZ" };
return event_string[index];
}
关于c - 有没有一种简单的方法将值转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44635310/