2012-08-17 55 views
5

我有一个函数需要能够写入标准输出或文件,具体取决于用户想要的内容。它默认为标准输出。要做到这一点,我做了以下(减去错误检查等):设置FILE *等于stdout是否便携?

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

else 
    out = stdout; 

// ...rest of the function goes here 

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

这肯定是卓有成效的,但我不知道它是如何携带。如果不是,或者还有其他问题,我该怎么办?

回答

8

是的,它是便携式的,并且没问题,前提是您不要混淆*stdout的低级别实现(例如,通过在Posix上调用close(fileno(stdout))或使用dup)。

1

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