我正在编写一个应该有两个版本的函数:调试版本和非调试版本。使用这两个函数中的哪一个应该由调用者决定。
我想要这样的东西:
调用者.c
// comment out the following line when not necessary anymore
#define MY_FUNC_DEBUG
#include "my_func.h"
// some code that calls my_func()
my_func.h
void my_func(void);
my_func.c
void my_func()
{
// lots of code
#ifdef MY_FUNC_DEBUG
// debug code
#endif
// more code
}
这显然是行不通的,因为 my_func.c 与 caller.c 是分开编译的,因此它不知道它定义了哪些宏。
我怎样才能轻松完成这项工作?我不想分别编写这两个版本my_func
,因为它们共享大部分代码。