5

我有一个函数需要能够写入标准输出或文件,这取决于用户想要什么。它默认为标准输出。为此,我正在执行以下操作(减去错误检查等):

FILE* out;
if (writeToFile) { /*Code to open file*/; }

else
    out = stdout;

// ...rest of the function goes here

if (out != stdout)
    fclose(out);

这当然可以,但我不知道它的便携性。如果不是,和/或它还有另一个问题,我应该怎么做?

4

2 回答 2

8

是的,它是可移植的,而且很好,前提是您不要弄乱 的低级实现*stdout(例如通过调用close(fileno(stdout))Posix 或使用dup)。

于 2012-08-17T15:20:30.620 回答
1

应该没问题。如果您在 DLL 的边界上来回传递指针,您可能会遇到麻烦(即,DLL 外部的 C 代码将指向标准输出的指针传递给 DLL 内部的 C 代码),但除此之外它应该是可移植的。

于 2012-08-17T15:21:36.777 回答