「C言語のテストでスタブ関数を使うためのアイデア」
マクロのトークン連結演算子(##)を使って関数名にソースファイル上の行数を付加することで、定義されている既存関数が呼ばれないようにします。
特に下記のような状況では有用ではないかと思います。
既存ソースは変更できない
置き換えたい関数が内部関数として同じファイルから呼び出されている
code:TestMain.c(抜粋)
# define target_function(a, b) target_function_(__LINE__, a, b)
# define target_function_(line, a, b) target_function__(line, a, b)
# define target_function__(line, a, b) target_function_##line(a, b)
# define target_function_3(a, b) stub_function(a, b)
# define target_function_9(a, b) stub_function(a, b)