【发布时间】:2012-10-02 14:51:10
【问题描述】:
我有一组已知的、预定的函数调用
FUNC_A("ABCD");
FUNC_A("EFGH");
而我希望做的是像
#define FUNC_A("ABCD") 0
#define FUNC_A("EFGH") 1
#define FUNC_A(X) 0xFF
所以在编译之前整个东西都被整数替换了,我可以关闭这个值,而不必存储字符串或在运行时进行比较。 我意识到我们不能在预处理器中做到这一点,但我只是想知道是否有人遇到过一些巧妙的方法来解决这个看似可以解决的问题。
【问题讨论】:
-
宏的参数是字符串重要吗?难道不能只是
FUNC_A(ABCD); FUNC_A(EFGH);用标记而不是字符串吗? -
是的,不幸的是,除了预处理器无法处理的字母之外,我还需要使用符号(例如 ==、>
-
我唯一能想到的是自定义解析器在编译前替换它们,但我真的不想更改源
标签: c c-preprocessor