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后缀,都能够正确编译运行。为什么会出现这样子的情况?
...全文
1221 12 打赏 收藏 转发到动态 举报
写回复
用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();然后他就可以运行了是这个意思么?
计算机科学系 课程设计报告 2012 — 2013学年 第二学期 课 程 名 称 C语言程序课程设计 设 计 题 目 学生通讯录管理系统 学 生 姓 名 学 号 专 业 班 级 计算机科学与技术 指 导 教 师 目 录 1.设计任务 1.1题目与要求………………………………………………(1) 1.2本系统涉及的知识点……………………………………(1) 2.功能设计 2.1算法设计…………………………………………………(2) 2.2主要模块流程图…………………………………………(3) 3.程序代码设计 3.1输入模块…………………………………………………(4) 3.2输出模块…………………………………………………(5) 4.总结……………………………………………………………(7) 参考文献…………………………………………………………(13) 附录………………………………………………………………(14) 1.设计任务书 1.1 题目与要求 本组计划(成员为:周慧,雷娜,向静,聂佩合作)编写一个学生通讯录管理系统, 主要用来管理学生基本信息。具体要求如下: 1) 通讯录编辑(添加、删除); 2) 按不同的项进行查找; 3) 对已存在的通讯录按不同的项排序; 4) 将通讯录写入文件; 5) 从文件读入通讯录 ; 根据分工,周慧的主要工作是通讯录的录入及通讯录的添加。 根据分工,雷娜的主要工作是查询菜单,按邮编、姓名、电话的不同方式分别进行通讯 录的查找。 根据分工,向静的主要工作是删除菜单,包括删除所有和删除单个,删除的方式有按邮 编、姓名删除。 根据分工,聂佩的主要工作是负责排序菜单及文件的保存退出,排序包括按姓名排 序和按邮编排序。 l.2 本系统涉及的知识点 if语句、while语句、for语句、switch语句函数与处理、函数的定义与声明、 内部函数与外部函数结构体数组和结构体与函数的运用。 Strcmp函数要与头文件string连用,用来从左至右比较ASCII码值大小,当前者比后者小 ,则返回小于0值,如果前者比后者大则返回大于0的值,相等就返回值为0。 System("pause")与头文件stdlib连用,调用系统命令,表示"press any key to continue..." Getch()函数与头文件连用,其原型函数为int getch(void) Ftell(fp) 返回当前位置相对文件开始的相对偏移量;否则返回值为-1。 Exit(0)表示正常退出,非0值表示异常退出,所在头文件stdio.h System("cls")与stdlib头文件连用,表示清屏功能。 2 功能设计 2.1 算法设计 1)本系统需要实现的功能要求: 利用switch语句设计如图1所示的主菜单:请输入选项编号(1~6) 1——新添记录 2——查询菜单 3——删除菜单 4——排序菜单 5——保存退出 6——不保存退出 图 1 学生通讯录系统主菜单 2)选择2后,调用查询函数,进入函数后利用switch语句实现一个如图2所示的菜单 ,该菜单中每个选项调用一个函数 图2 查询子菜单 3)选择3后,调用删除函数,进入函数后利用switch语句实现一个如图2所示的菜单 ,该菜单中每个选项调用一个函数 图3 删除子菜单 4) 选择4后,调用排序函数,进入函数后利用switch语句实现一个如图2所示的菜单,该菜 单中每个选项调用一个函数 图4 排序子菜单 2.2 主要模块流程图 "学生通讯录信息系统 " " " 图5 学生通信录流程图 3 程序代码设计 3.1输入模块 函数原形:void readfromfile(),void newrecord() 功能:用来判断和输入相应的进入主菜单的提示,输入num个学生信息(包括学生姓名、 电话号码、地址、邮编、e-mail),每输入一个学生的信息就判断是否继续 3、变量及类型:fp,为指针类型;student.txt为文本文件类型 4、说明::学生信息输入函数后,会在键盘缓冲区中保存回车键,后面再对字符型n um变量赋值时,会将缓冲区中的回车键当成数据存入变量中 5、模块代码及其相关注释 文件读入的代码及其相应注释: if((fp=fopen("student.txt","rb"))==NULL) { printf("\n\t\t通讯录文件不存在"); if((fp=fopen("student.txt","wb"))==NULL) { printf("\n\t\t建立失败"); exit(0); } else { printf("\n\t\t通讯录文件已建立"); printf("\n\t\t按任意键进入主菜单"); getch(); return; } exit(0); } fs
设计课题题目 一、课程设计目的与要求 1.课程设计目的 1. 综合运用之前所学知识(选择控制,循环控制,数组,函数,指针,结构体和文件等 )来完成一个简单的信息管理程序的设计。 2. 充分体现和体会函数在程序设计中的必要性和实用性,并反映主函数main()在程序 设计中的实现思路和方法。 2. 课程设计要求 制作一个通讯录系统。 (1)该程序具有查找、添加、修改、删除功能。 (2)通讯录包括:、、街道、城市、省、邮编等。 二、总体设计 根据系统的要求,系统总体设计如图1所示。 图 三、详细设计 1、数据结构设计 #include<stdio.h> /*标准输入输出函数库*/ #include<stdlib.h> /*标准函数库*/ #include /*字符串函数库*/ #define FILENAME "phone.dat" struct date //定义一个结构体类型数组 { char name[10]; /**/ char phone[12]; /**/ char email[20]; /**/ char QQ[20]; /*QQ*/ }per[10]; int menu() //主菜单选择函数 2.函数说明 (1) 主函数 main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。 (2) 其他各功能函数包括 "函数名 "功能 " "int Input(struct date "输入记录 " "per[10],int n) " " "void "信息查询 " "Query_a_record(struct " " "date per[10],int n) " " "void Display(struct date "信息展示 " "per[10],int n) " " "void writeToFile(struct "记录保存为文件 " "date per[10],int n) " " "int "信息删除 " "Delete_a_record(struct " " "date per[10],int n) " " "int menu_select(); "主菜单函数 " " " " " " " " "修改信息 " "void Change(struct date " " "per[10],int n) " " "void WritetoText(struct "信息增加 " "date per[10],int n) " " 四、程序清单 1、头文件 #include<stdio.h> /*标准输入输出函数库*/ #include<stdlib.h> /*标准函数库*/ #include /*字符串函数库*/ #define FILENAME "phone.dat" 2、主函数 void main() //主函数 { int n=0,i; while(1) { switch (menu()) {case 1: { printf("\n\t 通讯信息录入\n"); //信息录入 n=Input(per, n); } break; case 2: printf("\n\t\t\t 通讯录记录表\n"); //显示记录 Display(per,n); break; case 3: printf("\n\t保存功能\n"); WritetoText(per,n); //保存数据 printf("\t"); system("pause"); //操作完成后进行暂停 break; case 4: printf("\n\t从通讯录中删除记录\n"); n=Delete_a_record(per,n); //删除记录 printf("\t"); system("pause"); break; case 5: printf("\n\t修改通讯录中的记录\n"); Change(per,n); //修改数据 printf("\t"); system("pause"); break; case 6: printf("\n\t添加记录到通讯录\n"); //添加记录 n=Input(per,n); break; case 7: printf("\n\t在通讯录中查找记录\n"); Query_a_record(per,n); //查找记录 printf("\t"); system("pause"); //从程序里调用"pause"命令 break; case 0: printf("\n\t\t使用,再见!\n"); //结束程序 printf("\n\t\t"); system("pause"); exit(0); } 五、总程序和分工执行结果 #include<stdio.h

69,371

社区成员

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

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