我第一个C程序 frist.c

我第一个C程序 frist.clinux

1 #include <stdio.h>
2 
3 int main(void)
4 {
5     printf("这是第一个C程序!\n");
6     return 0;
7 }

1、程序解释 windows

第一行#include <stdio.h> 这是一个预处理命令行函数

include是一个预处理命令,意思是包含一个文件到当前文件优化

预处理命令行都是以"#"开头spa

<stdio.h> 指的standard input output 标准的输入输入操作系统

".h"指头文件(header files)主要包含函数的声明,宏定义等,这个文件主要包含如下输入输出的函数命令行

<>指在系统路径下查找这个文件,也能够替换为"stdio.h",指先在用户目录查找,而后再在系统目录查找这个文件3d

第二行空白行,为分割主要代码和前面的预处理,使代码看着更有组织code

第三行int main(void) 这是C的主函数是函数的首部,全部C程序都是从这个函数开始执行,并且每一个程序有且只能有一个main的定义。int 表示main函数的返回值是int(整型),void说明这个main函数没有参数。一个函数能够没有参数可是后面的"()"小括号不能省略。blog

第三行和第七行一对花括号 "{}"这个表示函数体,其中的内容为函数实现代码部分

第四行 printf("这是第一个C程序!\n"); 这句意思是调用printf函数在标准输出设备(屏幕)上输出"这是第一个C程序!\n"这句话,最后的\n意思是回车,输出会换行。

第六行 return 0;主函数返回一个0.主函数通常有操做系统调用执行,返回给操做系统一个0表示程序成功执行完成。

2、预处理

    编译前预处理程序根据预处理命令对C源代码作一个初步处理,主要有宏替换、条件编译和文件包含。
windows平台下能够使用VC的编译器程序cl(直接使用cl命令须要在环境变量中添加cl路径),在命令行下输入 cl /P first.c 会成一个first.i文件,这个就是预处理后的文件。打开这文件在最后会发现咱们的代码,这int main(void)以前多出不少代码。主要就是把stdio.h这文件包含了进来。

linux下使用 gcc -E first.c -o first.i 命令能够查看预测到first.i中的结果。也是多了不少代码,可是明显和windows下的不同,这说明不一样的预处理程序处理的结果是不一样的,除了包含stdio.h这个文件外还会添加本身的一些东西。

3、编译

将源代码转为汇编语言,优化也在这一阶段处理。优化选项可查看程序帮助。

Windows cl /FA first.c 会生成 first.asmfirst.objfirst.exe,其中first.asm是编译后生成的汇编代码。Cl命令在这一步一次完成了编译、汇编和链接,貌似没有单独编译为汇编的命令。

Linux gcc -S first.i 会生成 first.s这个汇编文件。查看first.asm first.s他们是不一样的。不一样的编译程序和不一样的平台生成的汇编代码是不相同的。

4、汇编

    将汇编代码转换为机器的二进制语言。在上一步中直接进行了汇编和链接过程。

Linuxgcc -c first.s 则能够生成二进制first.o文件。

5、连接

将生成的目标文件,经过link程序连接生成平台可执行文件。Linux上的可执行文件在windows上是不能执行的,反之亦然。可执行文件是由他的文件结构和权限决定其是否可以执行。而不是由于他的扩展名是exe。链接过程须要不少文件库文件,不一样平台也不一样。Linux使用ld程序,windows使用link程序。具体使用请查看ldlink程序说明。

6、执行

    执行生成的可执行,在屏幕上输出"这是第一个C程序!"

 

7、其余说明

gcc cl生成可执行文件,这个过程并非单一的gcccl完成,而是由多个程序完成的。每一个阶段都有相应的处理程序。

gcccl编译器有不少选项,能够查看其手册。

相关文章
相关标签/搜索