Marco van de..

7

除了形成所有代码生成器质量的原因外,还有其他问题:

免费的C编译器(gcc,clang)有点以Unix为中心

支持多个编译器(例如Unix上的gcc和Windows上的MSVC)需要重复工作.

编译器可能会在Windows上拖动运行时库(甚至是*nix仿真),这些都很痛苦.两个不同的C运行时(例如linux libc和msvcrt)基于使您自己的运行时及其维护复杂化

您在项目中获得了一个大型外部版本blob,这意味着主要的版本转换(例如,更改损坏可能会损害您的运行时库,ABI更改,如更改对齐)可能需要相当多的工作.请注意,这适用于编译器和外部版本(部分)运行时库.并且多个编译器将其相乘.这对于C和后端来说并不是那么糟糕,但是在你直接连接(读取:下注)后端的情况下,就像是gcc/llvm前端一样.

在遵循这条道路的许多语言中,您会看到Cisms渗透到主要语言中.当然这对你不开心,但你会受到诱惑:-)

不直接映射到标准C的语言功能(如嵌套过程和其他需要堆栈摆弄的东西)很难.

请注意,第4点也意味着您需要花时间在外部项目发展时保持工作.这段时间通常不会真正进入您的项目,并且由于项目更具动态性,因此多平台版本需要大量额外的发布工程来满足变更需求.

简而言之,从我所看到的,虽然这样的举动允许快速启动(为许多架构免费获得合理的代码生成器),但也有缺点.其中大多数都与失去控制和Windows支持*gix等*nix中心项目有关.(LLVM对于长期来说太新了,但是他们的言论听起来很像十年前的gcc).如果一个你非常依赖的项目保持一定的路线(比如GCC会非常慢),那么你就会陷入困境.

首先,确定您是否希望拥有严重的非*nix(OS X更加unixy)支持,或者只有具有Windows的mingw权宜之计的Linux编译器?许多编译器需要一流的Windows支持.

第二,产品必须如何成品?什么是主要受众?它是开源开发人员可以处理DIY工具链的工具,还是想要定位初学者市场(如许多第三方产品,例如RealBasic)?

或者你真的想为深度整合和完整工具链的专业人士提供全面的产品吗?

这三个都是编译器项目的有效指示.问问自己你的主要方向是什么,并且不要假设有更多选项可以及时获得.例如,评估九十年代早期选择成为GCC前端的项目.

基本上,unix的方式是扩展(最大化平台)

完整的套件(如VS和Delphi,后者最近也开始支持OS X并且过去支持linux)深入并尝试最大化生产力.(几乎完全支持Windows平台,深度集成)

第三方项目不太明确.他们更多地追求自雇程序员和小众商店.他们拥有较少的开发人员资源,但更好地管理和关注他们.

c是编译语言吗,将语言编译为C是一个好主意吗?相关推荐

  1. C语言编译全过程(转贴)

    C语言编译全过程 编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成 ...

  2. 【转载】C语言编译全过程

             今天在blog.chinaunix.net/u3博客看到一篇关于语言编译过程的文章,觉得精简,清晰所以摘录下来我的blog.作为一个程序员了解编译过程对程序的编写也很有帮助.下面是博 ...

  3. 以Linux系统上的gcc为例,解密C语言编译背后的全过程!

    在这个互联网时代,很多人都选择了计算机专业,而只要是计算机专业的小伙伴,可能都会学C语言,但是大家是否都清楚C语言编译的完整过程呢,今天我就带着大家一起来做个解密吧. C语言相对于汇编语言是一种高级语 ...

  4. 2.c语言编译预处理,c语言第03章-编译预处理2.ppt

    c语言第03章-编译预处理2 第3章 编译预处理 编译预处理是指,编译时,首先对编译预处理命令进行处理,然后再将预处理后的中间结果进行编译,以得到目标代码. 教学目的: 掌握#define.#incl ...

  5. c语言将源文件拷贝到目的文件,C语言编译过程 简介和详解

    C编译的整个过程很复杂,大致可以分为以下四个阶段: 1)预处理阶段在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所 ...

  6. C语言编译、链接过程探究

    编译器基本构成: C语言编译基本流程图解: 预处理: 处理所有的注释,以空格代替 将所有的#define删除,并且展开左右的宏定义 处理条件编译指令#if,#ifdef ,#elif,#else , ...

  7. C语言编译全过程剖析

    一. 摘要 C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识.硬件知识.工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问题 ...

  8. C语言编译链接生成可执行文件四大步骤:预处理(-E)->编译(-S)->汇编(-c) ->链接

    文章目录 一.编译过程简介 1.预处理器 2.编译器 3.汇编器 二.链接过程简介 1.静态链接: 由链接器在链接时将库的内容直接加入到可执行程序中 2.动态链接: 一.编译过程简介 编译过程可以分为 ...

  9. 编译我的第一个c语言,linux菜鸟学习写第一个C语言代码--“hello Linux!”

    2004年4月20日最新版本的GCC编译器3.4.0发布了.目前,GCC可以用来编译C/C++.FORTRAN.JAVA.OBJC.ADA等语言的程序,可根据需要选择安装支持的语言.GCC 3.4.0 ...

最新文章

  1. 因为失误导致数据丢失
  2. 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)
  3. 传闻要被「降级」的这所211高校,让这位网红教授「救活了」
  4. 833c语言程序是什么,江南大学
  5. Eclipse,以及tomcat使用时可能会遇到的几个问题
  6. 《Wireshark协议分析从入门到精通》
  7. 为什么多个线程不可能同时抢到一把锁_HFL Redis_12_redis分布式锁的3种实现方式...
  8. 我眼中的GaussDB——参加华为合伙伙伴赋能会有感
  9. OpenShift 4 - 部署一个基于 Serverless 的 Banking 应用
  10. 机器学习基础(三十五)—— 协同过滤(从匹配用户到匹配商品)
  11. python语言是非开源语言_python是非开源语言吗
  12. Java网络编程基础
  13. 蓝色音箱改装电源_创新便携/无线音箱排行榜,创新便携/无线音箱十大排名推荐...
  14. 对数用计算机,如何使用计算器计算对数
  15. 苹果公司独有的“产品包装艺术”
  16. 【Matlab】Simulink系统仿真(了解)
  17. 一进二出宿舍限电模块的基本功能
  18. Https中公私钥加密算法和其使用的RSA算法分析
  19. 洛谷noip 模拟赛 day1 T3
  20. 重磅 | Stratifyd入选“数据分析与商业智能平台典型供应商”

热门文章

  1. Codeforces Round #621题解
  2. android 带记忆功能的播放器源码,Android实现阅读进度记忆功能
  3. 一元二次方程用c语言代码,一元二次方程求解程序完整代码
  4. linuxroot密码正确无法登录_敦煌网忘记登录密码怎么办?敦煌网登录密码找回办法...
  5. 搭建 数字证书_CA认证介绍及搭建过程
  6. 你能找到心仪的妹子吗?- 时间复杂度进阶
  7. windows系统下Python环境的搭建
  8. Redhat下的yum更改为Centos的免费yum源
  9. jquery.min.map 404 (Not Found)出错的原因及解决办法
  10. Oracle RMAN 设置和配置(一)