C++でのTemplateのようなものを実現したいと思い、次のようなものを考えたんですが
標準C的にはどうなんでしょうか?自分なりにJIS X3010:2003を読んだ限りでは大丈夫だと思うのですが。

--- hoge.c ---
#define X_STR(a, b) a ## b
#define STR(a, b) X_STR(a, b)

TYPE STR(hoge, ID)(仮引数並び)
{
hoge();
}


・呼び出し側

#define TYPE int
#define ID id1
#include "hoge.c"
#undef TYPE
#undef ID
int na = hogeid1(hoge);