有没有办法在C ++编译时替换函数?

时间:2017-01-11 07:48:14

标签: c++ makefile

假设我有大量的.c文件,其中一些使用函数foo()。此功能未在这些文件中定义。

虽然我将这些代码保留为.c文件,但当我将它们编译为可执行文件时,我希望所有这些文件都调用bar()而不是调用foo()。有没有办法通过Makefile实现这一点?

1 个答案:

答案 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。

请注意,使用宏可能会导致代码可读性和可维护性问题。