这里我们声明了一些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/