警告: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“)”