假设我有以下在头文件中定义的宏:
# 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>;
}
使用:func_string2macro(“MACRO1”)然后它将返回MACRO_ID_1
我发现switch/case
可以解决这个问题
但是有很多宏(1000),那么开关/案例方法并不好。
任何人都可以支持我吗?
答案 0 :(得分:1)
我猜您可以尝试以下方法:
步骤1 - 从字符串中提取数字部分(例如,对于MACRO_ID_48,它将是48)
第2步 - 返回号码
当然,此解决方案仅适用于“定义”值名称中的数字代表值的天真方法。
另一个选项(如果'define'名称中的数字不等于值 -
步骤1 - 创建一个与'define'
值相同的数组步骤2 - 在init中,设置数组中的每个值以匹配'define'初始值
步骤3 - 从'string'解析数字后 - 返回保存在数组中的值