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

news2024/12/24 10:21:36

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语言后,达到的效果是理解程序的执行过程。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/450574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从数据管理到数据资产管理

数据已经与土地、劳动力、资本、技术并称为五种生产要素&#xff0c;数据的价值是毋庸置疑的。数据甚至成为了国家的基础性战略资源&#xff0c;数字经济也正在成为经济增长的强大创新动力。那么—— 数据到底指的是什么&#xff1f; 数据管理又是怎么回事&#xff1f; 数据如何…

Django项目之经济预测平台,应用LSTM、GBDT等算法

一、平台功能与技术点 1.技术点&#xff1a;Python3.9、Django4.1.7&#xff0c; tensorflow2.11.0&#xff0c;keras2.11.0&#xff0c;numpy1.24.2、bootstrap、ajax、MySQL等等 2.功能&#xff1a;正常前后端&#xff0c;前台主要完成经济预测功能&#xff08;特征和标签都…

✨✨✨ ❃ ♕ ꕥXpath解析html获取表情符号,丰富你的文章 ꧁ ꧂꧁ ꧂

✨✨✨ ❃ ♕ ꕥXpath解析html获取表情符号&#xff0c;丰富你的文章 ꧁ ꧂꧁ ꧂ 1. 推荐几个好玩的表情符号网站2. xpath解析html获取表情3. xpath解析html源码3.1 parse_li.py3.2 symbol2.html 参考 1. 推荐几个好玩的表情符号网站 &#x1f495; &#x1f9da; &#x1f6b…

SPDK软件栈基础概念

SPDK SPDK软件架构SSD和SPDK中controller和nsSPDK RPC &#xff08;一&#xff09;driverSPDK virtio-PCIe 和 vhost-user &#xff08;二&#xff09;Storage Services(存储设备)对象存储SPDK BlobStore&BlobFS SPDK 块设备驱动块设备驱动层的其他模块 &#xff08;三&…

KMP字符串匹配算法详解

目录 简单的暴力匹配算法KMP算法next数组next数组的优化 简单的暴力匹配算法 对于字符串的匹配通常是给出一个主串str和一个模式串sub&#xff0c;然后在主串pos位置开始匹配&#xff0c;如果能在str中找到sub那么就返回sub在str中首次出现的首个字符的下标&#xff0c;否则返…

地球系统模式(CESM)

目前通用地球系统模式&#xff08;Community Earth System Model&#xff0c;CESM&#xff09;在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。CESM由美国NCAR于2010年07月推出以来&#xff0c;一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、海…

【论文笔记】VideoGPT: Video Generation using VQ-VAE and Transformers

论文标题&#xff1a;VideoGPT: Video Generation using VQ-VAE and Transformers 论文代码&#xff1a;https://wilson1yan. github.io/videogpt/index.html. 论文链接&#xff1a;https://arxiv.org/abs/2104.10157 发表时间&#xff1a; 2021年9月 Abstract 作者提出了…

git 常用命令及遇到问题

自己没事&#xff0c;把git常用命令做个记录总结。方便自己和初学者查看&#xff0c;本文针对初学者&#xff0c;如果你已经是工作多年高手&#xff0c;请跳过。 git的几个区认识&#xff0c;分别为工作区&#xff0c;缓存区&#xff0c;版本库。 工作区&#xff1a;包含.git…

靶机精讲:BNE0x03Simple

主机发现 nmap扫描 端口扫描 服务扫描 脚本扫描 第二十页路径有目录 web渗透 搜索该版本漏洞 CuteCMS漏洞利用 下载下来 查看文件&#xff0c;发现是远程文件上传漏洞 按步骤进行注册 点进去 构造利用文件&#xff0c;反弹shell 最后语法错误应为0>1 尝试上传 根据漏洞扫…

实验04:图像压缩(DP算法)

1.实验目的&#xff1a; 掌握动态规划算法的基本思想以及用它解决问题的一般技巧。运用所熟悉的编程工具&#xff0c;运用动态规划的思想来求解图像压缩问题。 2.实验内容&#xff1a; 给定一幅图像&#xff0c;求解最佳压缩&#xff0c;使得压缩后的文件最小。 3.实验要求…

容易忽视的细节:Log4j 配置导致的零点接口严重超时

作者&#xff1a;vivo 互联网服务器团队- Jiang Ye 本文详细的记录了一次0点接口严重超时的问题排查经历。本文以作者自身视角极具代入感的描绘了从问题定位到具体的问题排查过程&#xff0c;并通过根因分析并最终解决问题。整个过程需要清晰的问题排查思路和丰富的问题处理经验…

大话数据结构-查找

1 查找概论 查找表&#xff08;Search Table&#xff09;是由同一类型的数据元素&#xff08;或记录&#xff09;构成的集合&#xff0c;如下所示&#xff1a;   关键字&#xff08;Key&#xff09;是数据元素中某个数据项的值&#xff0c;又称为键值&#xff0c;用它可以标…

LiteFlow规则引擎的入门

文章目录 1、LiteFlow简介2、解决的痛点3、快速开始3.1 引入依赖3.2 配置规则文件的位置3.3 定义组件3.4 指定规则3.5 编写客户端3.6 运行以及说明3.7 其他的组件 4、对于快速开始的思考5、LiteFlow的脚本组件5.1 脚本的定义5.2 脚本的使用5.3 关于脚本使用的思考 6、规则引擎的…

开源Qt Ribbon控件——SARibbon的布局思路及介绍

开源Qt Ribbon控件——SARibbon的布局思路及介绍 SARibbon的布局SARibbon名词定义Office布局模式——SARibbonBar::OfficeStyleWPS布局模式——SARibbonBar::WpsLiteStylepannel的布局行数3行模式2行模式 原文链接&#xff1a;https://blog.csdn.net/czyt1988/article/details/…

scala之基础面向对象

scala 既是面向对象 也是函数式编程 从Java 发展而来&#xff0c;依赖JVM环境 一、 scala 在linux中运行 scala 模式中直接编写运行 scala文件&#xff0c;load执行 scala编译程序 编译 运行 scala java 二、scala 数据类型 基础数据类型 val 不可变变量 函数式编程 …

Excel使用频率超高的20个函数,90%你没用过

上班必学必会的Excel函数&#xff0c;不仅是使用频率最大的&#xff0c;还是告别加班的利器。你会的函数越多&#xff0c;解决问题的思路越广&#xff0c;不再束手束脚。态度决定高度&#xff0c;细节决定成败。要想比别人更优秀&#xff0c;只有在每一件小事上比功夫。 组合、…

json-c交叉编译及库移植

编译后的文件 json-c交叉编译及库移植资源-CSDN文库 json-c开源库是一个用c实现的解析json字段的库&#xff0c;嵌入式领域比较实用的库。 由于应用程序需要&#xff0c;需要找移植这个json-c库&#xff0c;所以这里对该库的移植做个简单说明 json-c开源库是一个用c实现的解…

python基于机器学习模型开发实践kaggle旧金山犯罪案件分类预测模型

旧金山犯罪案件分类本质是一个文本的多分类任务&#xff0c;kaggle官网地址在这里&#xff0c;如下所示&#xff1a; 本文主要是以kaggle比赛数据集为基准&#xff0c;开发实践文本多分类任务。 比赛背景 从 1934 年到 1963 年&#xff0c;旧金山因高犯罪率而臭名昭著。时至今…

opengl绘制三角形

1.绘制两个三角形 GLfloat vertices1[] { 0.5f, 0.5f, 0.0f, 0.5f, -0.5f, 0.0f, -0.5f, 0.5f, 0.0f } GLfloat vertices2[] { 0.5f, -0.5f, 0.0f, -0.5f, 0.5f, 0.0f&#xff0c; -0.5f, -0.5f, 0.0f } 也可以用索引的方式&#xff1a; GLfloat vertices[] { 0.5f, 0.5f, 0…

并发编程常见问题复盘

并发编程常见问题复盘 大家好&#xff0c;我是易安&#xff01; 并发编程在计算机科学领域占有举足轻重的地位&#xff0c;它使得程序能够在多个处理器核心上同时执行&#xff0c;从而显著提升程序的性能。然而&#xff0c;并发编程也伴随着许多挑战和问题。这些年来&#xff0…