c - 有没有一种简单的方法将值转换为字符串?

标签 c

我定义了一些这样的宏:

#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/

相关文章:

c - 如何在c中存储固定长度的字符串

android - 为什么我为 6 个元素的字符数组输入值的循环指令在 3 个输入后停止?

c - 在 C 中如何将 int 转换为字符串?

c - 用大括号定义

c++ - 如何使用 clang 从 TagDecl 获取结构成员

c - 在套接字客户端服务器中发送多个文件

c - gcc:修复 -pedantic "unnamed structure"警告

c - 在有限的 16 字节字符串上将 IEEE 754-1985 双倍写入 ASCII

编译器错误 : invalid use of undefined type 'union ...' . 定义中有什么错误?

c - 我想检查一下是否是正方形。数字的根是 int