嗨,我正在用linux下的stdlib进行编程。
gcc会针对以下代码行发出以下警告,不知道为什么会这样?
FILE *fd;
if ( fd = fopen( filename, "rw" )== NULL )
{
并且警告是:
warning: assignment makes pointer from integer without a cast.
如何实现这一点,根据stdlib文档,fopen的返回类型为FILE *。那么为什么还有警告?有什么想法吗?
- 提前致谢 -
答案 0 :(得分:6)
尝试
if ((fd = fopen( filename, "rw")) == NULL)
^ ^
否则fd
将取值0或1,FILE *
返回的fopen
本身将丢失。因此,如果没有这些括号,比较结果将存储在fd
而不是FILE *
本身。
答案 1 :(得分:1)
您实际上将fd
指定为fopen(filename, "rw") == NULL
,因为条件表达式是整数(0或1),您要从整数指定指针。关注@ cnicutar的修复答案
答案 2 :(得分:0)
FILE *fd;
if ( (fd = fopen( filename, "rw" ))== NULL )
{
只需复制此代码即可使用.... 你只是忘了把()放在“fd = fopen(filename,”rwp>