LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 764|回复: 3

为什么同样一段C程序用gcc4.1和用gcc3.3编译的结果会不同?

[复制链接]
发表于 2007-3-12 14:33:36 | 显示全部楼层 |阅读模式
近来刚学习C语言,本来想linux正好与这对路,就想在linux下用gcc试验,可是一段小程序就发现gcc3.3和gcc4.1的不同之处.请看如下面的小程序:
debian:~# more e.c
main ()
{int a,b,c;
    scanf ("%d,%d",&a,&b);
    c=a+b;
    printf ("sum is %d\n",c);
}
上面这段程序用gcc-3.3编译没有错误,并且可执行文件可以运行,但用gcc4.1就有下面的错误.
debian:~# gcc-4.1 e.c
e.c: In function 'main':
e.c:3: warning: incompatible implicit declaration of built-in function 'scanf'
e.c:5: warning: incompatible implicit declaration of built-in function 'printf'
再说明一下,尽管他编译时有错误,但同样可以得到a.out文件,并且执行时与gcc3.3编译出的效果一样.

请问这是为什么?
发表于 2007-3-12 15:22:25 | 显示全部楼层
#include "stdio.h"

在第一行前加入这一行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-12 16:38:07 | 显示全部楼层
Post by elume
#include "stdio.h"

在第一行前加入这一行



谢谢,已经好了,现在用gcc3.3和gcc4.1都好了,请问#include <stdio.h>这句管什么用,前面的#是管什么用的?
回复 支持 反对

使用道具 举报

发表于 2007-3-12 17:56:38 | 显示全部楼层
这一般是编译器默认隐含包含头文件的问题.因为stdio.h提供标准输入输出(standard input output,stdio).你可以想像一下,一个程序没有IO能干啥?因此一般来说IO库是必须的,就像JAVA中的java.lang会被默认import.

#include 包含头文件.
#提示compiler下面的是一条预处理指令

这些都是very basic的concept,随便一本C的教程应该都有说
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表