
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.4 程序的编译过程
程序的编译过程如图1.4.1所示。首先编写源程序f.c。编写完毕后,通过编译器进行编译,这里的编译包括预处理、编译、汇编,详细过程将在Linux系统编程中讲解。读者如果有兴趣,可以参阅关于编译原理的书籍。f.c经过编译后,得到f.obj文件,f.obj文件中均是0/1类型的机器码,即CPU能够识别的微指令(英特尔的机器指令)。f.obj文件并不能执行,因为我们调用的标准库函数的代码并不在f.obj文件中。例如,上面main.c中的printf函数,其代码并不在main.obj中,这时经过链接就得到可执行文件f.exe。了解这个编译过程后,后面在编写程序遇到编译错误时,就可以分析错误,进而区分是编译错误还是链接错误。

图1.4.1 程序的编译过程
如图1.4.2所示,右键单击“1.Hello_World项目”,选择“在文件资源管理器中打开文件夹”,得到如图1.4.3所示的界面。在界面中我们可以看到一个解决方案,它其实是一个大文件夹。此后我们新建Hello_World项目时,VS会在我们的解决方案文件夹“开发环境搭建及调试窗口设置”下新建文件夹1.Hello_World,添加main.c时,就会在该文件夹下新建文本文件main.c。在Debug文件夹中可以看到main.obj文件,在上级文件夹的Debug文件夹中可以看到1.Hello_World.exe文件。

图1.4.2 选择“在文件资源管理器中打开文件夹”界面

图1.4.3 选择“在文件资源管理器中打开文件夹”后的界面