【发布时间】:2015-03-12 21:45:25
【问题描述】:
事情是这样的:
假设我在 C 中定义了两个函数:
test_1() {};
test_2() {};
我想要一个宏(例如 NUM_TEST)来引用测试编号。最好的方法是在代码中显示它:
#define NUM_TEST 1
test_1() {};
test_2() {};
int main() {
test_ ## NUM_TEST ## ()
}
如果有人能提供帮助,我将不胜感激找到解决方案,如何将函数名称与宏连接。
编辑:
为了更清楚。我想通过更改“宏 NUM_TEST”来更改 test_1() 和 test_2() 之间的调用函数。
是的,我知道有更简单的方法可以做到这一点,但这只是更一般问题的一个示例:如何在 C 中将宏与文本连接起来而不添加新行或新宏函数。
编辑 2:
显然我现在已经足够清楚了。假设我写了一个程序。它有两种(或更多)运行类型。我有一个名为 NUM_TEST 的宏。通过将提到的宏设置为 1 或 2,希望在 test_1() 或 test_2() 之间选择运行类型
谢谢!
【问题讨论】:
-
为什么人们喜欢宏?害怕编译器?他们通常以泪水告终。只对一些事情有好处
-
您是否尝试根据预处理器指令指定要运行的函数?为什么不直接使用开关?您也可以考虑使用#ifdef。
-
请阅读您的问题并使其合理
-
test_ ## NUM_TEST ## ()需要进入另一个宏定义。 -
请选择一种语言。是 C 还是 C++?宏预处理器是相同的,但您实际想要使用的解决方案可能不同。顺便说一句,您的函数定义在任何一种语言中都是无效的。
标签: c c-preprocessor