警告:fopen()调用

san*_*ika 0 c fopen warnings std

嗨,我正在用linux下的stdlib编程.

gcc针对以下代码行发出以下警告,任何想法为什么会这样?

FILE *fd;
if ( fd = fopen( filename, "rw" )== NULL )
{
Run Code Online (Sandbox Code Playgroud)

并且警告是:

warning: assignment makes pointer from integer without a cast.
Run Code Online (Sandbox Code Playgroud)

如何实现这一点,根据stdlib文档,fopen的返回类型是FILE*.那么为什么还有警告?有什么想法吗?

- 提前致谢 -

cni*_*tar 6

尝试

if ((fd = fopen( filename, "rw")) == NULL)
    ^                           ^ 
Run Code Online (Sandbox Code Playgroud)

否则fd将取值0或1并且FILE *返回的自身fopen将丢失.因此,如果没有这些括号,比较结果将存储在其中fd而不是FILE *自身.