C语言编译器(C语言编程软件)完全攻略(第二部分:与编译器相关的几个知识点)

介绍常用C语言编译器的安装、配置和使用。

二、与编译器相关的几个知识点

上节我们介绍了编译器和 IDE 的概念,大家肯定希望赶紧实践一下,用 IDE 真正地运行一段C语言代码来看看效果,这样能够更快地获得成就感。

但是,使用 IDE 的过程中会涉及到一些与编程有关的概念,这些概念如果不提前了解,即使能够运行出程序来,也是雾里看花,知其然不知其所以然。本节的目标就是让大家对这些概念有一个简单的了解。

1、源文件(Source File)

在开发软件的过程中,我们需要将编写好的代码(Code)保存到一个文件中,这样代码才不会丢失,才能够被编译器找到,才能最终变成可执行文件。这种用来保存代码的文件就叫做源文件(Source File)

每种编程语言的源文件都有特定的后缀,以方便被编译器识别,被程序员理解。源文件后缀大都根据编程语言本身的名字来命名,例如:

  • C语言源文件的后缀是.c
  • C++语言(C Plus Plus)源文件的后缀是.cpp
  • Java源文件的后缀是.java
  • Python源文件的后缀是.py
  • JavaScript源文件后置是.js

源文件其实就是纯文本文件,它的内部并没有特殊格式,能证明这一结论的典型例子是:在 Windows 下用记事本程序新建一个文本文档,并命名为demo.txt,输入一段C语言代码并保存,然后将该文件强制重命名为demo.c(后缀从.txt变成了.c,发现编译器依然能够正确识别其中的C语言代码,并顺利生成可执行文件。

源文件的后缀仅仅是为了表明该文件中保存的是某种语言的代码(例如.c文件中保存的是C语言代码),这样程序员更加容易区分,编译器也更加容易识别,它并不会导致该文件的内部格式发生改变。

C++ 是站在C语言的肩膀上发展期来的,是在C语言的基础上进行的扩展,C++ 包含了C语言的全部内容,将C语言代码放在.cpp文件中不会有错,很多初学者都是这么做的,很多大学老师也是这么教的。但是,我还是强烈建议将C语言代码放在.c文件中,这样能够更加严格地遵循C语言的语法,也能够更加清晰地了解C语言和C++的区别。

2、工程/项目(Project)

一个真正的程序(也可以说软件)往往包含多项功能,每一项功能都需要几十行甚至几千行、几万行的代码来实现,如果我们将这些代码都放到一个源文件中,那将会让人崩溃,不但源文件打开速度极慢,代码的编写和维护也将变得非常困难。

在实际开发中,程序员都是将这些代码分门别类地放到多个源文件中。除了这些成千上万行的代码,一个程序往往还要包含图片、视频、音频、控件、库(也可以说框架)等其它资源,它们也都是一个一个地文件。

为了有效地管理这些种类繁杂、数目众多的文件,我们有理由把它们都放到一个目录(文件夹)下,并且这个目录下只存放与当前程序有关的资源。实际上 IDE 也是这么做的,它会为每一个程序都创建一个专门的目录,将用到的所有文件都集中到这个目录下,并对它们进行便捷的管理,比如重命名、删除文件、编辑文件等。

这个为当前程序配备的专用文件夹,在 IDE 中也有一个专门的称呼,叫做“Project”,翻译过来就是“工程”或者“项目”。在 VC 6.0 下,这叫做一个“工程”,而在 VS 下,这又叫做一个“项目”,它们只是单词“Project”的不同翻译而已,实际上是一个概念。

3、工程类型/项目类型

“程序”是一个比较宽泛的称呼,它可以细分为很多种类,例如:

  • 有的程序不带界面,完全是“黑屏”的,只能输入一些字符或者命令,称为控制台程序(Console Application),例如 Windows 下的 cmd.exe,Linux 或 Mac OS 下的终端(Terminal)。
  • 有的程序带界面,看起来很漂亮,能够使用鼠标点击,称为GUI程序(Graphical User Interface Program),例如 QQ、迅雷、Chrome 等。
  • 有的程序不单独出现,而是作为其它程序的一个组成部分,普通用户很难接触到它们,例如静态库、动态库等。

不同的程序对应不同的工程类型(项目类型),使用 IDE 时必须选择正确的工程类型才能创建出我们想要的程序。换句话说,IDE 包含了多种工程类型,不同的工程类型会创建出不同的程序。

不同的工程类型本质上是对 IDE 中各个参数的不同设置;我们也可以创建一个空白的工程类型,然后自己去设置各种参数(不过一般不这样做)。

控制台程序对应的工程类型为“Win32控制台程序(Win32 Console Application)”,GUI程序对应的工程类型为“Win32程序(Win32 Application)”

控制台程序是 DOS 时代的产物了,它没有复杂的功能,没有漂亮的界面,只能看到一些文字,虽然枯燥无趣,也不实用,但是它非常简单,不受界面的干扰,所以适合入门,我强烈建议初学者从控制台程序学起。等大家对编程掌握的比较熟练了,能编写上百行的代码了,再慢慢过渡到GUI程序。

4、链接(Link)

上节我们讲到,源代码经过编译(Compile)后就变成了可执行文件,其实这种说法有点笼统,甚至从严格意义上来讲是错误的。源代码要经过编译(Compile)和链接(Link)两个过程才能变成可执行文件。

编译器一次只能编译一个源文件,如果当前程序包含了多个源文件,那么就需要编译多次。编译器每次编译的结果是产生一个中间文件(可以认为是一种临时文件),而不是最终的可执行文件。中间文件已经非常接近可执行文件了,它们都是二进制格式,内部结构也非常相似。

将当前程序的所有中间文件以及系统库(暂时可以理解为系统中的一些组件)组合在一起,才能形成最终的可执行文件这个组合的过程就叫做链接(Link)完成链接功能的软件叫做链接器(Linker)。

如果程序只包含了一个源文件,是不是就不需要链接了呢?不是的!

经过编译后程序虽然只有一个中间文件,不再需要和其它的中间文件组合了,但是这个唯一的中间文件还需要和系统库组合,这个过程也是链接。也就是说,不管有多少个源文件,都必须经过编译和链接两个过程才能生成可执行文件。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux第20步_在虚拟机上安装“Visual Studio Code”

1、双击windows系统桌面上的“FileZilla Client.exe”,打开FTP客户端,点击03软件下的Visual Studio Code,发现code_1.50.1-1602600906_amd64。 2、点击“文件”,然后点击“站点管理器”,见下图操作: 3、点…

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间 一、软件程序问答 如下图,软件以 佳易王vr体验馆计时计费软件V17.9为例说明 1、软件如何计时间? 点击相应编号的开始计时按钮即可 2、遇到停电再打开软件时间可以恢复吗&…

在 Oracle 数据库表中加载多个数据文件

在本文中,我将展示 SQL 加载器 Unix 脚本实用程序的强大功能,其中 SQL 加载器可以使用自动 shell 脚本加载多个数据文件。这在处理大量数据以及需要将数据从一个系统移动到另一个系统时非常有用。 它适合涉及大量历史数据的迁移项目。那么就不可能为每…

自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程

大家好,我是微学AI,今天给大家介绍一下自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程。在大模型ChatGPT发布之前,NLP领域是BERT,T5模型为主导,T5(Text-to-Text Transfer Transformer)是一种由Google Brain团队在2019年提出的自然…

大数据概念:数据网格和DataOps

数据网格(Data Mesh) 一种新型的数据架构模式,旨在解决传统数据架构中存在的一些问题,例如数据孤岛、数据冗余、数据安全等。数据网格将数据作为一种服务,通过在分布式环境中提供数据服务,实现数据的共享和…

多内层神经网络具有先天的不可解释性

多层神经网络的不可解释性是指其内部的决策过程很难被人类理解和解释。这主要是因为多层神经网络具有大量的神经元和多个层次的连接,使得网络的决策过程变得非常复杂。 具体而言,多层神经网络中每一层的神经元会根据输入的特征进行加权组合和非线性变换&…

Centos服务器安装Certbot以webroot的方式定时申请SSL免费证书

最近发现原先免费一年的SSL证书都改为3个月的有效期了,原先一年操作一次还能接受,现在3个月就要手动续期整的太慢烦了,还是让程序自动给处理下吧, 安装 Certbot yum install epel-release -y yum install certbot -yEPEL是由 Fe…

系统安全及应用

文章目录 系统安全及应用一、账号安全基本措施1、系统账号清理1.1 将用户设置为无法登录1.2 锁定长期不使用的账号1.3 删除无用的账户1.4 清空一个账号密码1.5 锁定账户文件passwd、shadow 2、密码安全控制设置密码有效期 3、命令历史限制3.1 减少命令记录条数3.2 登录时自动清…

13. 强化学习编程实验1-在格子世界中寻宝(1)

文章目录 1.实验目的2.任务描述3.任务分析3.1 待求问题是多步决策问题否3.2 问题求解过程是一个马尔科夫决策过程3.3 状态空间S的确定3.4 动作空间A的确定3.5 状态转移概率P的确定3.6 立即回报R的确定3.7 折扣 γ \gamma γ的确定 4. 编程架构4.1 程序中有哪些对象和类4.2 环境…

pyfolio工具结合backtrader分析量化策略组合,附源码+问题分析

pyfolio可以分析backtrader的策略,并生成一系列好看的图表,但是由于pyfolio直接install的稳定版有缺陷,开发版也存在诸多问题,使用的依赖版本都偏低,试用了一下之后还是更推荐quantstats。 1、安装依赖 pip install …

数据采集有哪些方法?HTTP代理起到什么作用?

在这个数字化的时代,数据就如同生活中不可或缺的元素,我们的行为、喜好、甚至是想法都被转化成了数字化的信息。那么,现代社会是如何进行数据的采集的呢?让我们一同来看看! 1. 网络浏览行为的追踪 在我们浏览互联网的…

【AI视野·今日NLP 自然语言处理论文速览 第六十六期】Tue, 31 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 31 Oct 2023 (showing first 100 of 141 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers The Eval4NLP 2023 Shared Task on Prompting Large Language Models a…

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致?(Staking 玩法)

Solmash是Solana生态中由社区主导的铭文资产LaunchPad平台,该平台旨在为Solana原生铭文项目,以及通过其合作伙伴SoBit跨链桥桥接到Solana的Bitcoin生态铭文项目提供更广泛的启动机会。有了Solmash,将会有更多的Solana生态的铭文项目、资产通过…

24年初级会计资格考试报名信息采集流程共10大步骤,千万不要搞错

2024年初级会计资格考试报名信息采集流程共10大步骤,不要搞错哦; 第一步:输入证件号、点击登录 第二步:阅读采集须知 第三步:填写个人信息(支付宝搜索"亿鸣证件照"或者微信搜索"随时照&q…

计算机网络-以太网交换基础

一、网络设备的演变 最初的网络在两台设备间使用传输介质如网线等进行连接就可以进行通信。但是随着数据的传输需求,多个设备需要进行数据通信时就需要另外的设备进行网络互联,并且随着网络传输的需求不断更新升级。从一开始的两台设备互联到企业部门内部…

数据结构第六弹---带头双向循环链表

双向循环链表 1、带头双向循环链表概念2、带头双向循环链表的优势3、带头双向循环链表的实现3.1、头文件包含和结构定义3.2、创建新结点3.3、打印3.4、初始化3.5、销毁3.6、尾插3.7、头插3.8、头删3.9、尾删3.10、查找3.11、在pos之前插入3.12、删除pos位置3.13、判断是否为空3…

EBU7140 Security and Authentication(三)密钥管理;IP 层安全

B3 密钥管理 密钥分类: 按时长: short term:短期密钥,用于一次加密。long term:长期密钥,用于加密或者授权。 按服务类型: Authentication keys:公钥长期,私钥短期…

虾皮、Lazada店铺流量怎么提升?自养号优势及测评系统如何搭建?

虾皮、Lazada是东南亚地区最大的购物平台之一,吸引了大量的买家和卖家。在竞争激烈的虾皮市场上,如何提升店铺的流量成为许多卖家关注的问题。以下是关于如何提升虾皮、Lazada店铺流量的一些建议。 一、店铺流量怎么提升? 首先,进行优质的…

50N65-ASEMI高压N沟道MOS管50N65

编辑:ll 50N65-ASEMI高压N沟道MOS管50N65 型号:50N65 品牌:ASEMI 封装:TO-247 连续漏极电流(Id):50A 漏源电压(Vdss):650V 功率(Pd):388W 芯片个数:2 引脚数量:…

tp5+workman(GatewayWorker) 安装及使用

一、安装thinkphp5 1、宝塔删除php禁用函数putenv、pcntl_signal_dispatch、pcntl_wai、pcntl_signal、pcntl_alarm、pcntl_fork,执行安装命令。 composer create-project topthink/think5.0.* tp5 --prefer-dist 2、配置好站点之后,浏览器打开访问成…