有没有办法获得一个无点的C流对象(FILE*
对象)?
我知道fopen("/dev/null","w");
可行,但我想知道是否有更好的方法。
优选地,该位以比posix层更高的级别存储数据,并且也更便携。
答案 0 :(得分:10)
否:Unix上的/dev/null
和Windows上的NUL:
(没有Cygwin或同等版本)是最好的方法。
(提到fopen("/dev/null","o");
的问题的原始版本,但此后已修复。)
哦,"o"
的{{1}}标志是不可移植的。可移植表单包含各种组合中的标记字符fopen()
,r
,w
,a
,b
。
答案 1 :(得分:6)
我有一些登录到stderr,我希望能够用旗帜将其关闭。我真的不需要做更多的事情而不是改变传递给fprintf的变量
a)包装功能
logging = TRUE;
void debugprint(...)
{
if (logging)
{
fprintf(stderr, ...);
}
}
b)我认为如果给它一个空指针,fprintf将返回。不记得了 - 试一试。然后你所要做的就是改变指针:)