嗨,我在linux下用stdlib编程。
对于下面这行代码,gcc发出下面的警告,你知道为什么吗?
FILE *fd;
if ( fd = fopen( filename, "rw" )== NULL )
{警告是:
warning: assignment makes pointer from integer without a cast.这是怎么发生的,根据stdlib文档,fopen的返回类型是FILE*。那么为什么警告还在那里呢?你知道吗?
--提前感谢--
发布于 2011-08-08 18:23:57
试一试
if ((fd = fopen( filename, "rw")) == NULL)
^ ^ 否则,fd将采用值0或1,并且fopen返回的FILE *本身将丢失。因此,如果没有这些括号,比较结果将存储在fd中,而不是FILE *本身。
发布于 2011-08-08 18:26:45
您实际上是将fd赋值为fopen(filename, "rw") == NULL,因为条件表达式是整数(0或1),所以您是从整数赋值指针。关注@cnicutar对修复的回答
发布于 2011-08-08 20:36:27
FILE *fd;
if ( (fd = fopen( filename, "rw" ))== NULL )
{只需复制此代码,它将会工作...你只是忘了把()放在"fd = fopen( filename,"rw“)周围”
https://stackoverflow.com/questions/6980725
复制相似问题