假设我有大量的.c文件,其中一些使用函数foo()
。此功能未在这些文件中定义。
虽然我将这些代码保留为.c文件,但当我将它们编译为可执行文件时,我希望所有这些文件都调用bar()
而不是调用foo()
。有没有办法通过Makefile实现这一点?
答案 0 :(得分:0)
C有一个名为preprocessor
的东西。它曾经在编译时做事(如果我们想要迂腐,它实际上是在编译器之前运行的。)
例如,#include <stdio.h>
告诉预处理器包含stdio.h文件。
您可以识别出一行通过#
符号发送给预处理器。
这是一个更详细的例子,与您的问题相关:
void foo() { ... }
void bar() { ... }
#ifdef USE_BAR
#define foo bar
#endif
foo();
如果您#define USE_BAR
,只要您拨打foo,它就会调用bar。您可以在makefile中定义USE_BAR。
请注意,使用宏可能会导致代码可读性和可维护性问题。