fdump と sdump の 2 つの関数を定義して、それぞれの場合で fprintf と sprintf を使用して、構造体をファイルまたはバッファーにダンプします。
2 つの関数でコードを繰り返さずに定義する方法はありますか? 1 つの解決策は、sdump を定義してから、それに基づいて fdump を定義することです。ei:
void fdump(FILE* f, struct mystruct* param) {
char buffer[MAX];
sdump(buffer, MAX, param);
fprint(f, "%s", buffer);
}
しかし、その解決策は無駄と中間バッファーです。たぶん fprintf も同じことをしますが。他の解決策はマクロの前処理によるものかもしれませんが、かなり複雑に見えます。何かアイデアはありますか?
前もって感謝します