我想定义两个函数 fdump 和 sdump,在每种情况下使用 fprintf 和 sprintf 将结构转储到文件或缓冲区。
有没有办法在不重复两个函数中的代码的情况下定义它们?一种解决方案可以是定义 sdump,然后基于它定义 fdump,ei:
void fdump(FILE* f, struct mystruct* param) {
char buffer[MAX];
sdump(buffer, MAX, param);
fprint(f, "%s", buffer);
}
但该解决方案浪费和中间缓冲。尽管 fprintf 可能也是如此。其他解决方案可能是通过预处理宏,但它看起来相当复杂。请问,有什么想法吗?
提前致谢