我有一个需要能够写入stdout或文件的函数,具体取决于用户想要的内容。它默认为标准输出。为实现这一目标,我正在做以下事情(减去错误检查等):
FILE* out;
if (writeToFile) { /*Code to open file*/; }
else
out = stdout;
// ...rest of the function goes here
if (out != stdout)
fclose(out);
这当然可以解决问题,但我不知道它有多便携。如果不是,和/或它有另一个问题,我应该怎么做呢?
答案 0 :(得分:8)
是的,它是可移植的并且很好,前提是你还没有弄乱*stdout
的低级实现(例如通过在Posix上调用close(fileno(stdout))
或使用dup
)。
答案 1 :(得分:1)
应该没问题。如果你在DLL的边界上来回传递指针(例如,DLL外部的C代码将stdout的指针传递给DLL内的C代码),你可能会遇到麻烦,但除此之外,它应该是可移植的。