c/c++语言开发共享警告:fopen()调用

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

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

FILE *fd; if ( fd = fopen( filename, "rw" )== NULL ) { 

并且警告是:

 warning: assignment makes pointer from integer without a cast. 

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

– 提前致谢 –

    尝试

     if ((fd = fopen( filename, "rw")) == NULL) ^ ^ 

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

    您实际上是将fd指定为fopen(filename, "rw") == NULL ,因为条件表达式是一个整数(0或1),您将从整数中指定一个指针。 按照@ cnicutar的答案进行修复

     FILE *fd; if ( (fd = fopen( filename, "rw" ))== NULL ) { 

    只需复制这段代码就行了….你只是忘了把()arround“fd = fopen(filename,”rw“)”

      以上就是c/c++开发分享警告:fopen()调用相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/518826.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐