首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告: fopen()调用

警告: fopen()调用
EN

Stack Overflow用户
提问于 2011-08-08 18:22:18
回答 3查看 296关注 0票数 0

嗨,我在linux下用stdlib编程。

对于下面这行代码,gcc发出下面的警告,你知道为什么吗?

代码语言:javascript
复制
FILE *fd;
if ( fd = fopen( filename, "rw" )== NULL )
{

警告是:

代码语言:javascript
复制
warning: assignment makes pointer from integer without a cast.

这是怎么发生的,根据stdlib文档,fopen的返回类型是FILE*。那么为什么警告还在那里呢?你知道吗?

--提前感谢--

EN

回答 3

Stack Overflow用户

发布于 2011-08-08 18:23:57

试一试

代码语言:javascript
复制
if ((fd = fopen( filename, "rw")) == NULL)
    ^                           ^ 

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

票数 6
EN

Stack Overflow用户

发布于 2011-08-08 18:26:45

您实际上是将fd赋值为fopen(filename, "rw") == NULL,因为条件表达式是整数(0或1),所以您是从整数赋值指针。关注@cnicutar对修复的回答

票数 1
EN

Stack Overflow用户

发布于 2011-08-08 20:36:27

代码语言:javascript
复制
FILE *fd;
if ( (fd = fopen( filename, "rw" ))== NULL )
{

只需复制此代码,它将会工作...你只是忘了把()放在"fd = fopen( filename,"rw“)周围”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6980725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档