假设,我在头文件中定义了以下宏:
# 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),那么 switch/case 方法就不好了。
有人可以支持我吗?
最佳答案
我想你可以尝试以下方法:
第 1 步 - 从字符串中提取数字部分(例如,对于 MACRO_ID_48,它将是 48)
- 对此有很多引用资料,例如 - How to extract numbers from string in c?
第 2 步 - 返回号码
当然,这个解决方案只适用于“定义”值名称中的数字代表值的朴素方法。
您的另一个选择(如果“定义”名称中的数字不等于该值 -
第 1 步 - 创建一个与“定义”的值大小相同的数组
第 2 步 - 在 init 中,设置数组中的每个值以匹配“定义”初始值
第 3 步 - 从“字符串”解析数字后 - 返回保存在数组中的值
关于检查输入字符串与 C 中给定宏的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35451585/