在上一篇中咱们已经建立了一个C程序,接下来分析一下里面的代码。html
打开项目中的main.c文件(C程序的源文件拓展名为.c),能够发现它是第一个C程序中的惟一一个源文件,代码以下:ios
#include <stdio.h> int main(int argc, const char * argv[]) { // insert code here... printf("Hello, World!\n"); return 0; }
#include 是C语言的预处理指令之一,所谓预处理,就是在编译以前作的处理,预处理指令通常以 # 开头编程
#include 指令后面会跟着一个文件名,预处理器发现 #include 指令后,就会根据文件名去查找文件,并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源文件中的 #include 指令,就像你把被包含文件中的所有内容拷贝到这个 #include 指令所在的位置同样函数
若是被包含的文件拓展名为.h,咱们称之为"头文件"(Header File),头文件能够用来声明函数("函数"就是面向对象中的"方法"),要想使用这些函数,就必须先用 #include 指令包含函数所在的头文件spa
#include 指令不只仅限于.h头文件,能够包含任何编译器能识别的C/C++代码文件,包括.c,.hpp,.cpp
等,甚至.txt,.abc
等等均可以
也就是说你彻底能够将第3行到第9行的代码放到其余文件中,而后用 #include 指令包含进来,好比:命令行
1> 将整个main方法代码放到其余文件中,而后用 #include 指令包含进来。翻译
2> 在main.c源文件中包含my.txt文件code
程序仍是能够照常运行的,由于 #include 的功能就是将文件内容彻底拷贝到 #include 指令所在的位置htm
不过你可能会疑惑,为何stdio.h用尖括号<>,而my.txt用双引号"" ?这个很好区别,若是是系统自带的文件,最好用<>;若是是开发人员本身建立的文件,最好用""对象
说明:这里用txt文件纯属演示,平时作项目不会这样作,除非吃饱了撑着,才会把代码都写到txt中去
前面也已经提到,C中的函数就是面向对象中的"方法"。C语言是一门面向过程的语言,是以过程为中心的编程思想,就是先分析出解决问题所须要的步骤,而后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用函数就能够了
一个C程序中必定会有一个main函数,也只能有一个main函数。main函数是整个C程序的入口。main.c的第3行代码就定义了一个main函数。
main函数的返回值为int类型,接收2个参数,其实能够不写参数
main函数能够简化成这样:
main() { // insert code here... printf("Hello, World!\n"); return 0; }
这里要注意的是:这里的main函数没有写返回值类型,并不表明函数没有返回值,而是表示返回值类型为int类型,void才表明函数没有返回值
因为C语言的语法限制不严格,咱们还能够进一步简化main函数:
main() { // insert code here... printf("Hello, World!\n"); }
虽然它要求main函数返回int类型的值,但咱们能够不返回
stdio.h
是C语言函数库中的一个头文件,里面定义了一些标准输入输出函数
。在main.c的第1行代码中,用#include指令包含了stdio.h文件。
这里之因此包含 stdio.h
文件,是由于在其中用到了在 stdio.h 内部声明的printf
函数,这个函数能够向标准输出设备(好比显示器屏幕)输出数据,屏幕上输出的文字就是第7行代码 printf("Hello, World!\n");
形成的,双引号""
内的文本为C语言的字符串.
步骤图以下:
C语言源文件的扩展名为".c",源文件以ASCII码形式存储,不能直接被计算机执行,由于计算机只能识别二进制指令,也就是0和1
把C的源程序翻译成计算机能够识别的二进制形式的目标代码文件,这个过程称为编译,由C的编译器完成
在编译的同时,还对源程序的语法等进行检查。若出现语法错误,则编译失败。若是编译成功则生成目标文件,目标文件名跟源程序文件名同样,扩展名为".obj"。好比,mj.c编译后生成目标文件mj.obj
每一个源文件是单独进行编译的,假如一个项目中有多个.c源文件,编译成功会生成多个对应的.obj目标。通常状况下,目标文件之间是有关联的,好比 a.obj 可能会调用 b.obj 中定义的一个函数,所以它们都不可以单独被计算机执行,并且目标文件中并不包含程序运行所须要的库函数等
将全部有关联的obj目标文件,以及系统提供的C库函数等组合在一块儿生成可执行文件的过程,称为"连接"
连接生成的可执行文件的文件名跟源程序文件同名,扩展名为".exe",计算机能够直接执行
若是是在Windows环境下,直接双击".exe"文件便可运行C语言程序
因为咱们的第一个C程序,是在Mac OS X系统环境下用Xcode建立的命令行项目,Mac OS X系统是基于UNIX系统的,所以生成的可执行文件的这样的:
双击能够用终端(命令行)打开:
说了这么多,总结一下第一个C程序的运行步骤:
1.在编译前先执行#include指令,拷贝stdio.h的内容到源程序中
2.编译源程序,生成目标文件
3.连接C语言函数库,生成可执行文件
4.运行可执行文件,在屏幕上输出"Hello, World!"
看起来好像挺多步骤的、挺麻烦的,可是当咱们点击Xcode的运行按钮时,Xcode会自动按顺序执行上面4个步骤
注:本文转自李明杰老师的M了个J博文。