C语言程序基本结构和编译过程

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(还是经过:预处理、编译、汇编、链接的过程):

 

猜你喜欢

转载自www.cnblogs.com/write-down/p/12896801.html