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

jefferyang 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后缀,都能够正确编译运行。为什么会出现这样子的情况?
...全文
1461 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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();然后他就可以运行了是这个意思么?

70,020

社区成员

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

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