第3 章 C源程序的编译、连接和运行 一个C源程序必须经过编译、连接,生成.exe可执行文件后才能运行。现以图2.5所示 的hello程序为例,说明程序的编译、连接、运行过程:单击菜单“生成”→“生成解决方案”, 或者按下快捷键F7,该程序将被编译,并连接生成可执行文件。输出窗口显示该过程的详细 信息,如图3.1所示。可以看出,文件hello.cpp被编译,并连接生成可执行文件hello.exe。 窗口最后一行表明程序生成成功,没有错误。 图3.1 输出窗口 如果程序生成成功,单击菜单“调试”→“开始执行(不调试)”,或者按下快捷键Ctrl+ F5运行程序,此时屏幕弹出控制台窗口,并显示Hello World等信息。注意,“请按任意键 继续…”不是程序执行的结果,是VisualStudio2013环境为方便用户查看结果而附加的,此 时,用户按键盘任意按键即可关闭该窗口,如图3.2所示。 图3.2 程序运行结果 VisualStudio2013为了方便用户操作,会自动检测可执行文件是否为最新文件,如果 代码改变后运行程序,会提示用户是否需要重新编译,如图3.3所示,单击“是”,则重新编译 代码并运行;单击“否”,则不进行编译,运行上次编译成功的程序。 程序设计基础(C 语言)习题集与实验指导(第3 版) 1 8 图3.3 重新编译对话框 如果新建项目采用的是建立空项目的方式,若按上述方式编译运行程序,则会出现错 误。用户可在输出窗口看到错误的具体内容是errorC4996:'scanf':Thisfunctionor variablemaybeunsafe,其含义为scanf为不安全函数。其原因是scanf在实际应用中会有 内存溢出风险,不允许使用,但对于初学者而言,可以通过设置忽略此错误。具体方法:选 择菜单“项目”→“project1属性”,将会弹出属性对话框,在其左边树形结构中单击选择“配 置属性”→C/C++,将其右侧选项“SDL检查”设置为“否”,如图3.4所示。 图3.4 C/C++属性设置 更改配置之后重新编译,该程序可顺利编译通过。此时运行程序,则控制台窗口会一闪 而过,没有显示任何结果。造成这个问题的原因是VisualStudio不会在空项目中自动添加 运行窗口等待命令,程序运行完成后窗口自动关闭。因此,需要添加命令使窗口等待,以期 看到程序运行结果。实现方法是:首先在代码第二行加入#include"stdlib.h",然后在主函 数最后一行添加system("pause");,如图3.5所示。 C 语言上机开发环境介绍 第一部分 图3.5添加“窗口等待”相关代码 如果程序出现语法错误,则会导致编译失败,此时输出窗口会显示错误信息。如图3.6 所示,printf函数少写了一个字母f,编译后输出窗口显示出错信息。此时,双击出错信息所 在行,则该行信息会高亮显示,同时编辑区会自动跳转到代码所在的行并使用箭头标记,此 外VisualStudio还会使用红色波浪线实时标记出错位置。根据提示的错误信息对程序进 行修改,然后重新编译程序。若错误仍然存在,则继续修改,直到没有错误为止。 19 图3.编译出错 6