首页 > 编程语言 >1、C++环境与编译

1、C++环境与编译

时间:2022-12-26 16:35:23浏览次数:62  
标签:环境 代码 程序 C++ 编译 编译器 main hello

C++环境与编译

章节概览

我们将在本章讨论以下内容:

a.什么是一个程序(抽象与实现)
b.什么是程序的程序的开发环境
c.什么是程序的编译
d.什么是IDE、compiler、assembler、linker、debugger

我们将在本章实践以下内容:

a.下载C++编译器并编译一个C++文件
b.配置一个C++的(集成)开发环境
c.测试C++文件的基本方法

如果你对本章内容感兴趣,请跳到理论部分开始阅读本章内容。

章节测试

以下测试用来检验本章的成果,如果你感到毫无压力,说明你已经掌握了本章的绝大多数知识,进而跳过本章。或者,你也可以稍后用它来检验你在本节的学习成果。

Q1. 请简述关于“什么是一个程序”的几种历史观点。

Q2. 什么是一个abstraction,什么是一个implemention。

Q3. 请简述代码转换(tanslation)的两种方式,以及对它们的历史观点。

Q4. 请列举三个目前最广泛使用的C++的编译器,并把它们按照支持高级编程语言数目从多到少的顺序排序。并且写出它们在命令行的名称。

Q5. 文本编辑器的功能有哪些?如果IDE警告找不到头文件<iostream>,但是代码可以正常编译运行,可能是什么功能出现了问题?

Q6. 请列举两个目前最广为使用的文本编辑器。

Q7. 我们一般怎么称呼C++的通用调试器(general debugger)?

Q8. c++的项目构建工具有哪些?

Q9. 什么是一个IDE?

Q10. 判定一个程序功能正确,需要满足哪两个条件?

理论部分

论题 1.什么是程序

历史讨论

现代的人可能不会对“程序”一词有太大的困扰,其中很大一部分原因是“习以为常”。但是如果要编写“程序”,或者类似的东西,我们应该仔细考虑一下“程序”到底是一个什么东西。以下是tsq查阅了百度百科的结果,然而,由现代计算机体系结构的观点来看,这些结果是很不准确的,特别是对于从事有关程序方面的人来说:

计算机程序(Computer Program),港、台译做电脑程式。计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。
它以某些程序设计语言编写,运行于某种目标结构体系上。打个比方,程序就如同以英语(程序设计语言)写作的文章,要让一个懂得英语的人(编译器)同时也会阅读这篇文章的人(结构体系)来阅读、理解、标记这篇文章。一般的,以英语文本为基础的计算机程序要经过编译、链接而成为人难以解读,但可轻易被计算机所解读的数字格式,然后放入运行。
程序是一个指令序列。
为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据。从计算机的底层来说,这是由高级语言(例如Java,C/C++,C#等)代码转译成机器语言而被CPU所理解,进行加载。

或者,如果你查阅计算机科学方面的书籍,它会告诉你“程序”是运行于操作系统抽象层之上的抽象层。

程序的抽象层

但是,事实上,有些“程序”,比如JAVA程序,往往运行在JVM上;而C#程序,往往运行在.NET上。就算同样是硬件,又有不同的品牌,不同的厂商,不同的型号... ... 要从抽象层(程序运行的环境)这方面来看,有很大困难。

抽象与实现

那么,有没有什么办法来统一大家对于“程序”的观点呢?答案是:“yes”。我们需要先引入程序抽象的定义。

在现代计算机体系结构的观点来看,事物分为两个方面:抽象(abstraction)和实现(implemention)。由行为定义(behavior-defined)的那些称为抽象,而由实现定义的那些称为实现。(注意:我们用“那些”来指代,不论是具体的还是想象的,是实在的还是虚拟的,是物理的还是数字的,都在此定义之内)一个抽象层,是指一个元素均为抽象的集合。

abstraction:又称how,是指一个东西的集合由它的表现(behavior)定义;
implemention:又称what,是指一个东西的集合由它的部分(component)定义;

下面几个例子来帮助读者理解abstraction和implemention。请读者务必理解abstraction和implemention的区别,因为C++几乎所有的内容都是通过abstraction和implemention来定义的。

现代数学的一个主流观点认为,“自然数集合”是满足下列条件的那些集合:①N中有一个元素,记作1。②N中每一个元素都能在N中找到一个元素作为它的后继者。③1不是任何元素的后继者。④不同元素有不同的后继者。⑤(归纳公理)N的任一子集M,如果1∈M,并且只要x在M中就能推出x的后继者也在M中,那么M=N。

按照这个“自然数集合”的观点来看,似乎好多东西都可以成为自然数。例如,一个猴子在黑板上写了一串意义不明的符号:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14。并且这只猴子会按照某种规律(当然,你也许会知道是什么规律)不停地、永远地写下去。我们来看,这些符号是不是满足“自然数集合”的定义呢?答案是“yes”,所以它就是自然数集合。(如果你认为答案是“no”,你可以想一想,如果把猴子写的第一个符号0当作是自然数集合定义中的1,会发生什么)

如果这个猴子写的是另一串意义不明的符号:

1,11,111,1111,11111,111111,1111111,11111111,111111111,1111111111,11111111111,111111111111,1111111111111,11111111111111。并且这只猴子会按照某种规律(当然,你也许会知道是什么规律)不停地、永远地写下去。我们来看,这些符号是不是满足“自然数集合”的定义呢?答案是“yes”,所以它就是自然数集合。

如果这个猴子写的是另一串意义不明的符号:

0,1,10,11,100,101,110,111,1000,1001,1010,1011,1100,1101,1110。并且这只猴子会按照某种规律(当然,你也许会知道是什么规律)不停地、永远地写下去。我们来看,这些符号是不是满足“自然数集合”的定义呢?答案是“yes”,所以它就是自然数集合。

猴子也许不满足于符号,而是拿出了香蕉,排出了香蕉的阵列:

标签:环境,代码,程序,C++,编译,编译器,main,hello
From: https://www.cnblogs.com/tsqurt/p/17006117.html

相关文章

  • C++项目中编译部分C的代码
    在C++项目中如果真能编译部分C的代码,那么一定会用到一下语句#ifdef__cplusplusextern"C"{#endif/*...*/#ifdef__cplusplus}#endif下面......
  • C++强化 | 06 一篇文章带你掌握字符数组
    导读数组是信息学中非常重要的一块内容,可以说是必备的,也几乎是信息学竞赛中写代码必用的。前面的三节课,我们讲了一维数组,让大家对一维数组有了更加全面深刻的认知。本篇文章......
  • 本地开发环境使用redis
    1.使用cmd连接后,查询结果出现乱码时,尝试连接时加--raw参数2.如果还是乱码,设置cmd窗口编码 chcp65001就是换成UTF-8代码页chcp936可以换回默认的GBKchcp437是......
  • 本机环境部署步骤
    1、下载安装包并解压 2、升级pippip3install--upgradepip 3、pip安装requirements.txt文件(里面放的是项目所需的依赖包)pip3install-rrequirements.txt在pyt......
  • docker环境部署步骤
    前提条件:项目中写有dockerfile文件(dockerfile是用来构建镜像的文件,就一些命令的集合) 1、修改setting.py文件中的数据库配置  2、可使用navicat工具新建一个数据库......
  • 迅为RK3588开发板单独编译Android固件
    进入到3588-android12文件夹,输入以下命令设置java版本为1.8版本,如下图所示:sourcejavaenv.shjava-version输入以下命令使能编译环境:sourcebuild/envsetup.shlunch......
  • 关于UTF-8、GBK编码以及编译时charset的指定的一些总结
    首先分清两个概念:C文件中(转换为16进制)汉字的编码,编译后bin文件中汉字的编码。gcc的-finput-charset和-fexec-charset两个选项的存在就是为了实现这两者的转换。默认......
  • c++开机自动启动程序
    为了让程序开机自动启动,找了一些网上资料终于实现。voidHKRunator(){charprogramName[MAX_PATH]={0};DWORDdwRet=GetModuleFileName(NULL,(LPSTR)p......
  • vite环境变量
    vite环境变量1、根目录创建.env.development、.env.production//.env.development开发环境地址NODE_ENV='development'VITE_BASE_URL='开发环境地址'//.env......
  • 什么?Coolbpf 不仅可以远程编译,还可以发现网络抖动! | 龙蜥技术
    近日,在 ​​2022云栖大会龙蜥峰会eBPF&Linux稳定性专场​​上,来自eBPF技术探索SIGMaintainer的毛文安分享了《Coolbpf的应用实践》技术演讲,以下为本次演讲内容:......