デバッグ バージョンと非デバッグ バージョンの 2 つのバージョンが必要な関数を作成しています。2 つの関数のどちらを使用するかは、呼び出し元が決定する必要があります。
私はこのようなものが欲しい:
caller.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
の 2 つのバージョンを別々に書きたくはありません。コードの大部分を共有しているためです。