c - 如何从 C 中的字符串中获取 const 的值?

标签 c

这里我们声明了一些C语言的只读引用:

#define KEY_A       4
#define KEY_B       5
#define KEY_C       6
#define KEY_D       7
#define KEY_E       8
#define KEY_F       9
#define KEY_G       10
#define KEY_H       11
#define KEY_I       12

我们可以简单地通过像 var = KEY_G 一样调用 const 来获取值,但是如果我们解析文本并使用它的内容来实际设置 var 会怎样?是否有像 var = get_const_by_string("KEY_G") 这样的函数可以通过知道它的名字来获取 const 的内容?

最佳答案

因为宏扩展发生在编译之前,所以没有什么可以自动完成的。您当然可以编写自己的函数:

int get_const_by_string(char* var){
    if(strcmp(var,"KEY_A") == 0) return KEY_A;
    if(strcmp(var,"KEY_B") == 0) return KEY_B;
    if(strcmp(var,"KEY_C") == 0) return KEY_C;
    if(strcmp(var,"KEY_D") == 0) return KEY_D;
    if(strcmp(var,"KEY_E") == 0) return KEY_E;
    if(strcmp(var,"KEY_F") == 0) return KEY_F;
    if(strcmp(var,"KEY_G") == 0) return KEY_G;
    if(strcmp(var,"KEY_H") == 0) return KEY_H;
    if(strcmp(var,"KEY_I") == 0) return KEY_I;
    return -1;  /*error flag*/
}

对于更大的常量列表,您可以做一些事情,例如为它们创建一个哈希表,但对于只有 9 个左右的常量,这可能有点矫枉过正。

关于c - 如何从 C 中的字符串中获取 const 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43711943/

相关文章:

c - 在 C 中返回函数数组

C:char指针和数组的区别

c - 使用 C 在 gnuplot 中设置标题和标签

c - 有没有更好的 MACRO 来获得 2^n (1 << n) 的恒定功率值

c - 如何将字节数组转换为 int 数组?

c - 如何以编程方式访问 C 中的 bash 命令历史记录?

使用 memcpy 的 dest 对象中的缓冲区溢出的编译器警告/错误

c - 平方方程计算器在 C 中不起作用

c - C 中的牛顿·拉弗森

c++ - 为什么很少有人输入 const 正确的代码? const 正确的代码会编译得更好/更快吗?