> 文章列表 > C语言开发环境搭建及调试

C语言开发环境搭建及调试

C语言开发环境搭建及调试

C简介

可移植 标准C C/C++ (系统硬件操作的接口,windows,Linux不一样)

跨平台 Java Python

下载

去官网选择Visual Studio 2019下载

在这里插入图片描述

安装过程中勾选使用C++的桌面开发

安装好之后点击创建新项目——空项目

在这里插入图片描述

在这里插入图片描述

位置最好放在根目录下,解决方案名称可以是中文,填好之后点创建

在这里插入图片描述

新建代码并编译运行

选择源文件——添加——新建项

在这里插入图片描述

默认是cpp(c plus plus),就是C++。

在这里插入图片描述

名称填入以 .c 结尾,这样就是C语言了。(C++语法更严格些,初学者建议用C)

在这里插入图片描述

#include <stdio.h> //这是头文件,写C和C++都要加头文件//入口函数   程序执行时从main函数进入
int main() {printf("Hello world\\n");//打印输出//system("pause"); vs2012需要再输入这句代码,2019、2017不需要return 0;
}

main是主函数名,int是函数返回值类型。每个C程序必须有一个主函数main,程序从main函数开始执行。花括号{}是函数开始和结束的标志,不可省略。每个C语句均以半角分号结束。

点击本地Windows调试器开始运行程序

在这里插入图片描述

执行结果

在这里插入图片描述

使用标准库函数时应在程序开头一行书写如下内容:

#include <stdio.h>  //printf函数需要使用该头文件
#include <stdlib.h>  //system函数需要使用该头文件

程序的编译过程

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

在这里插入图片描述

我们在集成开发环境中写的代码叫做源程序f.c。经过编译之后首先生成的是目标文件f.obj。

在这里插入图片描述

”解决方案“所在文件夹:

在这里插入图片描述

一个解决方案里面可以有多个项目,这里helloworld就是其中一个项目

在这里插入图片描述

编写的代码文件就在main.c

在这里插入图片描述

在这里插入图片描述

编写的代码经过编译首先生成的文件是目标文件main.obj

在这里插入图片描述

下一步目标文件进行链接,生成可执行文件f.exe

在这里插入图片描述

为什么要进行链接?

答:因为目标文件main.obj中并没有我们刚才编写的代码的函数的源码,比如printf函数,这个库函数的实现在目标文件main.obj中并没有,而是在动态库里。

为什么要强调链接过程?

答:后面一旦出现编译错误时,会有一个错误是链接错误。后续遇见错误时要区分是编译错误还是链接错误。

程序变为exe经过了两步,一步是编译,一步链接。

断点及调试窗口设置

先把行号显示出来,工具 - 选项 - 文本编辑器 - C/C++ - 行号。

在这里插入图片描述

打断点,在左边区域点击一下即可

在这里插入图片描述

有三大调试窗口,先学把两个调出来

  1. 内存。在后面学到数组,指针可以看到成片的数据变化,很方便。
  2. 监视。可以把变量输入到该窗口里,想看哪个变量,执行下一步,某个变量变化了就可以在监视中看到。

当程序还没有运行并停到某一步时是不能调出调试窗口的,如下,没有显示

在这里插入图片描述

当程序运行起来并停到断点处时,刚才的断点会显示成箭头,此时可以调出调试窗口先调出监视窗口

在这里插入图片描述

再调出内存窗口

在这里插入图片描述

在这里插入图片描述

如何进行调试:

在这里插入图片描述

目标

学习C语言后,达到的效果是理解程序的执行过程。

程序的执行过程简单来说就是内存的变化过程,因此后面的章节都会关注内存的变化。我们通过内存来存储数据,数据存储要有规律,以便我们高效取出;把处理好的数据存放好,以便在用户需要时显示给用户。