嗨,我正在用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