在windows下,可执行程序(executable program)大部分是 .exe 程序,它是一系列计算机指令和数据的集合。这些指令都是二进制形式的,cpu可以直接识别,毫无障碍;但是对于程序员,它们非常晦涩,难以记忆和使用。
计算机发展初期,程序员就是使用这些二进制形式的cpu指令来编写程序的。
直接使用cpu指令编程对程序员来说简直是噩梦,尤其是当程序比较大的时候,不但编写麻烦,需要频繁查询指令手册,而且除错会异常苦恼,要直接面对一堆二进制数据,让人眼花缭乱。另外,用cpu指令编程步骤繁琐,要考虑各种边界情况和底层问题,开发效率十分低下。这就倒逼程序员开发出了编程语言,提高自己的生产力;例如汇编、c语言、c++、java、python、go语言等,都是在逐步提高开发效率。至此,编程终于不再是只有极客能做的事情了,不了解计算机的读者经过一定的训练也可以编写出有模有样的程序。
什么是编译器
c语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于cpu,c语言代码就是天书,根本不认识,cpu只认识几百个二进制形式的指令。这就需要一个工具,将c语言代码转换成cpu能够识别的二进制指令,也就是将代码加工成 .exe 程序;这个工具是一个特殊的软件,叫做编译器(compiler)。编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译(compile)。c语言的编译器有很多种,不同的平台下有不同的编译器,例如:
windows 下常用的是微软开发的cl.exe,它被集成在 visual studio 或 visual c++ 中,一般不单独使用;
linux 下常用的是 gun 组织开发的gcc,很多 linux 发行版都自带 gcc;
mac 下常用的是llvm/clang(以前是 gcc,后来由于 gcc 的不配合才改为 llvm/clang)。
你的代码语法正确与否,编译器说了才算,我们学习c语言,从某种意义上说就是学习如何使用编译器,让编译器生成可执行程序(例如 windows 下的 .exe 程序)。编译器可以100%保证你的代码从语法上讲是正确的,因为哪怕有一点小小的错误,编译也不能通过,编译器会告诉你哪里错了,便于你的更改。
选择合适的ide
实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件,例如编辑器、调试器、文件管理等,这些工具通常被打包在一起,统一发布和安装,例如 visual studio、dev c++、xcode、visual c++ 6.0、code::blocks、c-free 等,它们统称为ide(integrated development environment,集成开发环境)。
01
windows
windows 下的 ide 比较多,我推荐使用 visual studio 或者 dev c++;如果你的操作系统是 xp 或者 win7,你也可以使用 c-free。另外,国内很多高校还在使用 visual c++ 6.0,把它作为c语言教学的工具。① visual c++ 6.0(简称vc 6.0)是微软开发的一款经典的ide,很多高校都以 vc 6.0 为教学工具来讲解c和c++。但vc 6.0是1998年的产品,很古老了,在 win7、win8、win10 下会有各种各样的兼容性问题,甚至根本不能运行,所以不推荐使用。② visual studio(简称vs)是 visual c++ 6.0 的升级版,增加了很多新特性,支持了更多的语言,是 windows 下的标准 ide,实际开发中大家也都在使用。不过 vs 有点庞大,安装包有2~3g,下载不便,而且会安装很多暂时用不到的工具,安装时间在半个小时左右。为了适应最新的 windows 操作系统,微软每隔一段时间(一般是一两年)就会对 vs 进行升级。vs 的不同版本以发布年份命名,例如 vs2010 是微软于 2010 年发布的,vs2017 是微软于 2017 年发布的。③ dev c++ 是一款免费开源的 c/c++ ide,内嵌 gcc 编译器(gcc 编译器的 windows 移植版),是 noi、noip等比赛的指定工具。dev c++ 的优点是体积小(只有几十兆)、安装卸载方便、学习成本低,缺点是调试功能弱。
noi 是national olympiad in informatics的缩写,译为“全国青少年信息学奥林匹克竞赛”;noip 是national olympiad in informatics in provinces的缩写,译为“全国青少年信息学奥林匹克联赛”。noi、noip 都是奥林匹克竞赛的一种,参加者多为高中生,获奖者将被保送到名牌大学或者得到高考加分资格。
④ c-free 是一款国产的 windows 下的c/c++ ide,最新版本是 5.0,整个软件才 14m,非常轻巧,安装也简单,界面也比 dev c++ 漂亮。c-free 的缺点也是调试功能弱。可惜的是,c-free 已经多年不更新了,组件都老了,只能在 xp、win7 下运行,在 win8、win10 下可能会存在兼容性问题,所以我才重点推荐 dev c++,否则我会更加倾向于 c-free。
02
linux
在 linux 下使用gcc(gnu compiler collection,gnu编译器套件)。gcc是gun组织开发的自由软件,除了支持c,还支持c++、java、objective-c等,它是linux平台编译器的事实标准。
03
mac os x
在 mac os x 下使用 xcode。xcode 是由 apple 官方开发的ide,支持c、c++、objective-c、swift 等,可以用来开发 mac os x 和 ios 上的应用程序。xcode 最初使用 gcc 作为编译器,后来由于 gcc 的不配合,改用 llvm/clang。
虽然c语言的 ide 众多,但是c语言的绝大部分内容在各个 ide 下都是通用的。
网易七鱼构想的“智慧生活街区”,多项技术精准适配业务
步进电机发生失步和振荡的原因
小米和华为入选2021年度全球百强创新机构
医疗废物在线管理系统优点
秦淮数据宣布启动美股私有化,与贝恩资本达成31.6亿美元交易
如何选择C语言编译器和IDE
区块链治理辩论什么时候可以停止
飞思卡尔日前推出其下一代DSC产品组合的第一个系列产品
延长汽车电子零部件寿命,先进防水透气技术是关键
三星在中国市场遇冷,国产手机品牌在海外市场的压力恐激增
iPhone6、6s和iPhone7的区别,看不出来不算果粉!
华为服务器“改换门庭”:智能计算从“芯”开始
三星悄悄引入EUV,大量投产使用EUV 1ynm制造的DRAM芯片
存储和计算芯片在集成电路产业中占据核心地位
数据时代,你的企业上“云”了吗?
电瓶修复—充电器修复问题连载4
手持糖度计操作五大步骤的详细讲解
用于机器人应用的紧凑型高分辨率触觉传感器
Cadence推动创新5G与射频协同设计
锂电上游资源及原材料企业分析 教你如何抓住行业的源头