C语言程序的基本结构
一、 include头文件包
#include的意思是头文件包含;例如:#include <stdio.h> 代表包含stdio.h这个头文件
注:#include< > 与 #include ""的区别:
< > 表示系统直接按系统指定的目录检索
"" 表示系统先在 "" 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录
二、main函数
一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数,必须有)和若干个其他函数结合而成(可选)。
main函数是C语言程序的入口,程序是从main函数开始执行。
三、{} 括号,程序体和代码块
{}叫代码块,一个代码块内部可以有一条或者多条语句,所有的可执行语句必须是在代码块里面
C语言每句可执行代码都是";"分号结尾
所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的
四、注释
注释的内容编译器是忽略的,注释主要的作用是在代码中加一些说明和解释,这样有利于代码的阅读
C语言中的注释方式:
1、//叫行注释; 2、/**/叫块注释。
五、return语句
return代表函数执行完毕,返回return代表函数的终止
在main函数中return 0代表程序执行成功,return -1代表程序执行失败
注意:int main()和void main()在C语言中是一样的,但C++只接受int main这种定义方式
C语言程序的编译过程
一、预处理
宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
二、编译
检查语法,将预处理后文件编译生成汇编文件
三、汇编
将汇编文件生成目标文件(二进制文件)
四、链接
C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去
C语言中的gcc编译
一、分布编译
预处理:gcc -E hello.c -o hello.i
编 译:gcc -S hello.i -o hello.s
汇 编:gcc -c hello.s -o hello.o
链 接:gcc hello.o -o hello
选项 | 含义 |
-E | 只进行预处理 |
-S | 只进行预处理和编译 |
-c(小写c) | 只进行预处理、编译和汇编 |
-o 文件名(字母o和文件名之间有空格) | 指定生成的输出文件名 |
文件后缀 | 含义 |
.c | C语言文件 |
.i | 预处理后的C语言文件 |
.s | 编译后的汇编文件 |
.o | 编译后的文件 |
二、一步编译
gcc 文件名.c -o 文件名(还是经过:预处理、编译、汇编、链接的过程):
例如:gcc hello.c -o demo(还是经过:预处理、编译、汇编、链接的过程):