检查输入字符串是否与给定宏匹配在C中

时间:2016-02-17 08:38:29

标签: 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>;
}

使用:func_string2macro(“MACRO1”)然后它将返回MACRO_ID_1

我发现switch/case可以解决这个问题 但是有很多宏(1000),那么开关/案例方法并不好。

任何人都可以支持我吗?

1 个答案:

答案 0 :(得分:1)

我猜您可以尝试以下方法:

步骤1 - 从字符串中提取数字部分(例如,对于MACRO_ID_48,它将是48)

第2步 - 返回号码

当然,此解决方案仅适用于“定义”值名称中的数字代表值的天真方法。

另一个选项(如果'define'名称中的数字不等于值 -

步骤1 - 创建一个与'define'

值相同的数组

步骤2 - 在init中,设置数组中的每个值以匹配'define'初始值

步骤3 - 从'string'解析数字后 - 返回保存在数组中的值