system("PAUSE");不包含stdlib头文件为何也能运行

jefferyang no 软件工程师  2013-08-04 04:21:59
system()函数的头文件是stdlib.h,但是在不包含该头文件的情况下我的代码也能正常运行,代码如下:
#include <stdio.h>
//#include <stdlib.h>

int main(void)
{
printf("hello world\n");

system("PAUSE");
return 0;
}

我在VS2010和VC6.0下分别新建的空项目,添加源文件时直接写的.c后缀,都能够正确编译运行。为什么会出现这样子的情况?
...全文
388 点赞 收藏 12
写回复
12 条回复
Big-C 2014年09月19日
遇到这种错误应该怎么办,点击“项目”--》“属性”--》“清单工具” ‘输入和输出’--》‘嵌入清单’,后面的‘是’改成‘否’就可以了
回复 点赞
倒在四百页 2013年08月06日
我的理解是编译器会自动加载一些常用的库。 下面也会有warning但照样会运行正常:
//#include <stdio.h>
//#include <stdlib.h>

int main(void)
{
    printf("hello world\n");


    system("PAUSE");
    return 0;
}
引用 10 楼 fzamygsd 的回复:
把#include <stdio.h>也注释掉呢?
回复 点赞
fzamygsd 2013年08月06日
引用 6 楼 jefferyang 的回复:
[quote=引用 4 楼 AnYidan 的回复:] 估计作了特殊处理,未声明而又与标准库中的函数同名,默认标准库
特殊处理,果然还是跟编译器自身有关的么,好忧伤[/quote] 把#include <stdio.h>也注释掉呢?
回复 点赞
程序员的自我修养——链接、装载与库
好书
回复 点赞
赵4老师 2013年08月05日
连接器作了连接默认库处理吧。 《程序员的自我修养——链接、装载与库》
回复 点赞
一根烂笔头 2013年08月05日
编译器搞鬼!
回复 点赞
jefferyang 2013年08月04日
引用 4 楼 AnYidan 的回复:
估计作了特殊处理,未声明而又与标准库中的函数同名,默认标准库
特殊处理,果然还是跟编译器自身有关的么,好忧伤
回复 点赞
max_min_ 2013年08月04日
引用 4 楼 AnYidan 的回复:
估计作了特殊处理,未声明而又与标准库中的函数同名,默认标准库
回复 点赞
AnYidan 2013年08月04日
估计作了特殊处理,未声明而又与标准库中的函数同名,默认标准库
回复 点赞
水平不流 2013年08月04日
这个会运行,我是感觉有点奇怪. 如果system实在stdlib中的,不包含,要出错的.
回复 点赞
酱油小龟 2013年08月04日
你用gcc试试 肯定不行。。
回复 点赞
jefferyang 2013年08月04日
查看了一下vs2010的编译输出信息如下: f:\vsworkspace\cprogram\cprogram\hello.c(8): warning C4013: “system”未定义;假设外部返回 int 也就是说编译器自己给我声明了int system();然后他就可以运行了是这个意思么?
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告