为啥这样的程序能通过编译

过去的我 2010-05-04 07:09:18
struct node{
int f;
char x;
}
main()
{
}
而且还不报warning!
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
...全文
78 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
过去的我 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 alwaysslh 的回复:]

编译器把struct node的定义当成了main函数的返回类型,而c中main函数并无返回类型,所以编译器也不会对其进行检测,所以main函数中没有返回值编译器也不会警告
[/Quote]

哦,thanks ,我理解了..
AlwaysSLH 2010-05-04
  • 打赏
  • 举报
回复
编译器把struct node的定义当成了main函数的返回类型,而c中main函数并无返回类型,所以编译器也不会对其进行检测,所以main函数中没有返回值编译器也不会警告
AlwaysSLH 2010-05-04
  • 打赏
  • 举报
回复

#include<stdlib.h>
#include<stdio.h>

struct node{
int f;
char x;
}

f()
{
struct node n;
}

void main()
{
struct node n;
n.f = 0;
n.x = 'a';
printf("%d %c", n.f, n.x);
system("pause");
}

看一下这段代码的警告信息就明白了
taodm 2010-05-04
  • 打赏
  • 举报
回复
C语言有啥好多讨论的。你换.cpp后缀就知道了。
ekisstherain 2010-05-04
  • 打赏
  • 举报
回复
会错吧~~
AlwaysSLH 2010-05-04
  • 打赏
  • 举报
回复
main前加void就会报错了
黑娃 2010-05-04
  • 打赏
  • 举报
回复
仔细看的话结构体最后少了分毫,main不是int返回,编译都通不过呀vs2008
过去的我 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 falcomavin 的回复:]

node是类嘛,编译器只会自动为你调用构造函数,它怎么知道实际上你有没有初始化。
[/Quote]

不是重点。。仔细看。。
黑娃 2010-05-04
  • 打赏
  • 举报
回复
node是类嘛,编译器只会自动为你调用构造函数,它怎么知道实际上你有没有初始化。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧