本节书摘来自华章计算机《C语言编程魔法书:基于C11标准》一书中的第1章,第1.3节,作者: 陈轶 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 主流C语言编译器介绍

对于当前主流桌面操作系统而言,可使用Visual C++、GCC以及LLVM Clang这三大编译器。其中,Visual C++(简称MSVC)只能用于Windows操作系统;其余两个,除了可用于Windows操作系统之外,主要用于Unix/Linux操作系统。像现在很多版本的Linux都默认使用GCC作为C语言编译器。而像FreeBSD、macOS等系统默认使用LLVM Clang编译器。由于当前LLVM项目主要在Apple的主推下发展的,所以在macOS中,Clang编译器又被称为Apple LLVM编译器。MSVC编译器主要用于Windows操作系统平台下的应用程序开发,它不开源。用户可以使用Visual Studio Community版本来免费使用它,但是如果要把通过Visual Studio Community工具生成出来的应用进行商用,那么就得好好阅读一下微软的许可证和说明书了。而使用GCC与Clang编译器构建出来的应用一般没有任何限制,程序员可以将应用程序随意发布和进行商用。不过由于MSVC编译器对C99标准的支持就十分有限,加之它压根不支持任何C11标准,所以本书的代码例子不会针对MSVC进行描述。所幸的是,Visual Studio Community 2017加入了对Clang编译器的支持,官方称之为——Clang with Microsoft CodeGen,当前版本基于的是Clang 3.8。也就是说,应用于Visual Studio集成开发环境中的Clang编译器前端可支持Clang编译器的所有语法特性,而后端生成的代码则与MSVC效果一样,包括像long整数类型在64位编译模式下长度仍然为4个字节,所以各位使用的时候也需要注意。为了方便描述,本书后面涉及Visual Studio集成开发环境下的Clang编译器简称为VS-Clang编译器。
而在嵌入式系统方面,可用的C语言编译器就非常丰富了。比如用于Keil公司51系列单片机的Keil C51编译器;当前大红大紫的Arduino板搭载的开发套件,可用针对AVR微控制器的AVR GCC编译器;ARM自己出的ADS(ARM Development Suite)、RVDS(RealView Development Suite)和当前最新的DS-5 Studio;DSP设计商TI(Texas Instruments)的CCS(Code Composer Studio);DSP设计商ADI(Analog Devices,Inc.)的Visual DSP++编译器,等等。通常,用于嵌入式系统开发的编译工具链都没有免费版本,而且一般需要通过国内代理进行购买。所以,这对于个人开发者或者嵌入式系统爱好者而言是一道不低的门槛。不过Arduino的开发套件是可免费下载使用的,并且用它做开发板连接调试也十分简单。Arduino所采用的C编译器是基于GCC的。还有像树莓派(Raspberry Pi)这种迷你电脑可以直接使用GCC和Clang编译器。此外,还有像nVidia公司推出的Jetson TK系列开发板也可直接使用GCC和Clang编译器。树莓派与Jetson TK都默认安装了Linux操作系统。在嵌入式领域,一般比较低端的单片机,比如8位的MCU所对应的C编译器可能只支持C90标准,有些甚至连C90标准的很多特性都不支持。因为它们一方面内存小,ROM的容量也小;另一方面,本身处理器机能就十分有限,有些甚至无法支持函数指针,因为处理器本身不包含通过寄存器做间接过程调用的指令。而像32位处理器或DSP,一般都至少能支持C99标准,它们本身的性能也十分强大。而像ARM出的RVDS编译器甚至可用GNU语法扩展。
图1-1展示了上述C语言编译器的分类。


《C语言编程魔法书:基于C11标准》——1.3 主流C语言编译器介绍相关推荐

  1. 《C语言编程魔法书:基于C11标准》——第一篇 预备知识篇 第1章 C魔法概览1.1 例说编程语言...

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第1章,第1.1节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 预备 ...

  2. c语言魔法书,C语言编程魔法书:基于C11标准

    C语言编程魔法书:基于C11标准 作者:陈轶 著 出版日期:2017年05月 文件大小:10.29M 支持设备: ¥60.00在线试读 适用客户端: 言商书局 iPad/iPhone客户端:下载 An ...

  3. c语言程序设计资料书下载,C语言编程魔法书:基于C11标准 (陈轶著) 完整pdf高清版[20MB]...

    C语言编程魔法书:基于C11标准主要讲解C11标准的语法内容,并且从整个编译.连接到加载过程都会涉及.同时在后会分别介绍GCC编译器与Clang编译器的C语言语法扩展.通过阅读本书,读者能够完全掌握新 ...

  4. 《C语言编程魔法书:基于C11标准》——2.9 本章小结

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第2章,第2.9节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.9 本章 ...

  5. 《C语言编程魔法书:基于C11标准》——3.3 本章小结

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第3章,第3.3节,作者 陈轶,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.3 本章小 ...

  6. 《C语言编程魔法书:基于C11标准》——2.6 大端与小端

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第2章,第2.6节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.6 大端 ...

  7. 《C语言编程魔法书:基于C11标准》——1.6 本章小结

    本节书摘来自华章计算机<C语言编程魔法书:基于C11标准>一书中的第1章,第1.6节,作者: 陈轶 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.6 本章 ...

  8. C11标准委员会成员解读C语言新标准

    导读:C语言国际标准新的新草案之前已经公布,新标准提高了对C++的兼容性,并将新的特性增加到C语言中.此外支持多线程的功能也受到了开发者的关注,基于ISO/IEC TR 19769:2004规范下支持 ...

  9. 换硬币c语言编程_为什么大多数程序员都会学C语言的5大原因!什么原因让你学不会?...

    一.c语言,不朽的传奇 从30年前到如今,一些流行的科技媒体上发表的编程语言排行榜,c语言始终稳定位于前三位,这是其他一种其他的编程语言都达不到的.c语言的江湖地位,不容撼动.虽历史悠久,却也是不朽的 ...

最新文章

  1. .NetCore~框架版本号不同引起dotnet不能run它
  2. 全文检索4.5查询语法
  3. 【luogu P2919 [USACO08NOV]守护农场Guarding the Farm】 题解
  4. 2.5 学习词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授
  5. 前端开发这么多年,你真的了解浏览器页面渲染机制吗?
  6. 【干货】理发师都知道的产品经理最容易犯的几个错误
  7. 每天6亿人在看《延禧攻略》?大数据告诉你哪家视频网站VIP值得买(附代码)
  8. 定义下一代存储,打造全新一代数据基础设施
  9. 日常问题——使用Xshell 连接虚拟机报错 Disconnected from remote host
  10. wlan bss ess ssid
  11. [论文阅读] Looking for the Detail and Context Devils: High-Resolution Salient Object Detection
  12. HTML标签之间有什么区别 div 和span?/span
  13. 晨会纪要081110
  14. 长尾词推广系统推荐乐云seo_长尾词优化推广很好乐云seo
  15. PTA L1-049 天梯赛座位分配(20分)(python)
  16. nltk,wordnet安装时出现问题关于omw-1.4
  17. 深度学习学习率对模型训练的影响
  18. 使用C加加实现计算器功能。可以实现加减乘除。需要用到内联。函数重载。new运算符。缺省参数
  19. 美团Java面试题,苹果手机java编程软件
  20. Anton and Letters

热门文章

  1. matlab转换成vc,如何将matlab65函数转换成vc++60动态链接库.doc
  2. python爬贴吧回复内容_Python 基础语法+简单地爬取百度贴吧内容
  3. gpu超算算法_科学网—GPU“虎山”探未来
  4. python之路---03 整型 bool 字符串 for循环
  5. 团队任务3:每日立会(2018-10-25)
  6. Luogu P2735 电网【真·计算几何/Pick定理】By cellur925
  7. java集合浅谈(一)
  8. Swift翻译之-Swift语法入门 Swift语法介绍
  9. 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集
  10. Sql添加Oracle数据库的表空间和用户