Fed*_*ico 1 c function c-preprocessor
在我的C项目中,我有五个不同的函数(具有相同的名称),它们以不同的方式实现一种算法.在编译时,我只需要选择其中一个函数.我可以使用#define一堆和一堆来实现这个#ifndef吗?有没有更好的方法来做到这一点?
Ale*_*x R 15
可能更优雅的方法是用5个不同的名称(例如f1,f2,f3,f4,f5)定义它们,但总是使用相同的不同名称(例如f)调用函数.然后编译类似于:
gcc -Df=f1
这将编译任何对f()的调用作为对f1()的调用.
是.你所做的就是在代码中这样说:
#if defined(FUNC1)
...func1 here
#elif defined(FUNC2)
...func2 here
...ect. ect.
#endif
Run Code Online (Sandbox Code Playgroud)
然后在编译时添加gcc选项-DFUNCX例如:
gcc -DFUNC1 -o myprogram myfile.c
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过更改放在-D选项中的值来选择要编译的函数.这是很常见的做法.
| 归档时间: |
|
| 查看次数: |
415 次 |
| 最近记录: |