【发布时间】:2016-02-17 08:38:29
【问题描述】:
假设,我在头文件中定义了以下宏:
# 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 方法就不好了。
有人可以支持我吗?
【问题讨论】:
-
字符串化操作符 (#) 可以帮助您吗? msdn.microsoft.com/en-us/library/7e3a913x.aspx
-
宏 names 在运行时不可用,因此很遗憾这是不可能的。
-
@Ctx:我同意你的看法。我使用了一个表来映射 ID 和宏。谢谢