检查输入字符串是否与C中给定的宏匹配
假设在头文件中定义了以下宏:检查输入字符串是否与C中给定的宏匹配,c,macros,C,Macros,假设在头文件中定义了以下宏: # define MACRO_ID_1 1 # define MACRO_ID_2 2 ... # define MACRO_ID_1000 1000 在main.c中,我将输入一个字符串,如MACRO1、MACRO2。。。 我想写一个函数从输入字符串输出宏 int func_string2macro (char* string) { ... return <macro_similar_to_string>
# define MACRO_ID_1 1
# define MACRO_ID_2 2
...
# define MACRO_ID_1000 1000
在main.c中,我将输入一个字符串,如MACRO1、MACRO2。。。
我想写一个函数从输入字符串输出宏
int func_string2macro (char* string)
{
...
return <macro_similar_to_string>;
}
int func_string2macro(char*string)
{
...
返回;
}
如果使用:func_string2macro(“MACRO1”),则它将返回MACRO_ID_1
我发现switch/case
可以解决这个问题
但对于大量宏(1000),则开关/案例方法并不好
有人能支持我吗?我想你可以试试以下方法: 步骤1-从字符串中提取数字部分(例如,对于宏\u ID\u 48,它将是48)
- 这方面有很多参考资料,例如:
步骤3-一旦解析了“string”中的数字-返回保存在数组中的值字符串化运算符(#)可能会帮助?宏名称在运行时不可用,因此很遗憾这是不可能的。@Ctx:我同意你的看法。我使用了一个表来映射ID和宏。谢谢。我的情况是定义中的数值与字符串不匹配。对大量数据(许多定义值)使用数组是不好的。有什么建议吗?