我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为 可执行程序(Executable Program) 。在 Windows 下,可执行程序的后缀有 .exe 和 .com(其中 .exe 比较常见);在类 UNIX 系统(Linux、Mac OS 等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。

可执行程序的内部是一系列计算机指令和数据的集合,它们都是二进制形式的,CPU 可以直接识别,毫无障碍;但是对于程序员,它们非常晦涩,难以记忆和使用。

例如,在屏幕上输出“VIP会员”,C语言的写法为:

puts("VIP会员");

二进制的写法为:

你感受一下,直接使用二进制是不是想撞墙,是不是受到一吨重的伤害?

在计算机发展的初期,程序员就是使用这样的二进制指令来编写程序的,那个拓荒的年代还没有编程语言。

直接使用二进制指令编程对程序员来说简直是噩梦,尤其是当程序比较大的时候,不但编写麻烦,需要频繁查询指令手册,而且除错会异常苦恼,要直接面对一堆二进制数据,让人眼花缭乱。另外,用二进制指令编程步骤繁琐,要考虑各种边界情况和底层问题,开发效率十分低下。

这就倒逼程序员开发出了编程语言,提高自己的生产力,例如汇编、C语言、C++、Java、Python、Go语言等,都是在逐步提高开发效率。至此,编程终于不再是只有极客能做的事情了,不了解计算机的读者经过一定的训练也可以编写出有模有样的程序。

什么是编译器

C语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于CPU,C语言代码就是天书,根本不认识,CPU只认识几百个二进制形式的指令。这就需要一个工具,将C语言代码转换成CPU能够识别的二进制指令,也就是将代码加工成 .exe 程序;这个工具是一个特殊的软件,叫做 编译器(Compiler) 。

编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为 编译(Compile) 。

编译也可以理解为“翻译”,类似于将中文翻译成英文、将英文翻译成象形文字,它是一个复杂的过程,大致包括词法分析、语法分析、语义分析、性能优化、生成可执行文件五个步骤,期间涉及到复杂的算法和硬件架构。对于学计算机或者软件的大学生,“编译原理”是一门专业课程,有兴趣的读者请自行阅读《编译原理》一书,这里我们不再展开讲解。

注意:不了解编译原理并不影响我们学习C语言,我也不建议初学者去钻研编译原理,贪多嚼不烂,不要把自己绕进去。

C语言的编译器有很多种,不同的平台下有不同的编译器,例如:

  • Windows 下常用的是微软开发的 cl.exe,它被集成在 Visual Studio 或 Visual C++ 中,一般不单独使用;
  • Linux 下常用的是 GUN 组织开发的 GCC,很多 Linux 发行版都自带 GCC;
  • Mac 下常用的是 LLVM/Clang,它被集成在 Xcode 中(Xcode 以前集成的是 GCC,后来由于 GCC 的不配合才改为 LLVM/Clang,LLVM/Clang 的性能比 GCC 更加强大)。

你的代码语法正确与否,编译器说了才算,我们学习C语言,从某种意义上说就是学习如何使用编译器,让编译器生成可执行程序(例如 Windows 下的 .exe 程序)。

编译器可以 100% 保证你的代码从语法上讲是正确的,因为哪怕有一点小小的错误,编译也不能通过,编译器会告诉你哪里错了,便于你的更改。

什么是集成开发环境

实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件,例如:

  • 编辑器:用来编写代码,并且给代码着色,以方便阅读;
  • 代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程;
  • 调试器:观察程序的每一个运行步骤,发现程序的逻辑错误;
  • 项目管理工具:对程序涉及到的所有资源进行管理,包括源文件、图片、视频、第三方库等;
  • 漂亮的界面:各种按钮、面板、菜单、窗口等控件整齐排布,操作更方便。

这些工具通常被打包在一起,统一发布和安装,例如 Visual Studio、Dev C++、Xcode、Visual C++ 6.0、C-Free、Code::Blocks 等,它们统称为 集成开发环境(IDE,Integrated Development Environment) 。

集成开发环境就是一系列开发工具的组合套装。 这就好比台式机,一个台式机的核心部件是主机,有了主机就能独立工作了,但是我们在购买台式机时,往往还要附带上显示器、键盘、鼠标、U盘、摄像头等外围设备,因为只有主机太不方便了,必须有外设才能玩的爽。

集成开发环境也是这个道理,只有编译器不方便,所以还要增加其他的辅助工具。

选择哪种集成开发环境

C语言的集成开发环境有很多种,尤其是 Windows 下,多如牛毛,初学者往往不知道该如何选择。我们将在接下来的四篇文章中,分别讲解 Windows、Mac OS、Linux、Android 和 iOS 下集成开发环境的选择:

  • Windows下C语言开发环境的搭建
  • Linux下C语言开发环境的搭建
  • Mac OS下C语言开发环境的搭建
  • 在手机上编译和运行C语言程序

当然,你不用全部都了解,如果你使用 Windows,那么请忽略 Mac OS 和 Linux;如果你使用 Mac OS,那么请忽略 Windows 和 Linux。

C语言编译器,神奇的魔法师相关推荐

  1. 单片机c语言编译软件6,eUIDE下载-单片机c语言编译器 v1.07.32.23 官方版 - 安下载...

    eUIDE是一款专业的单片机c语言编译器,EM78系列集成开发环境是面向项目的ELAN EM78系列微控制器的开发工具,它包括UICE开发在线仿真器和eUIDE软件工具:eUIDE是基于PC端的UIC ...

  2. 毕业设计 c语言编译器的设计开发-字节代码格式设计与实现 开题报告,C语言编译器设计与实现...

    C语言编译器设计与实现(任务书,外文翻译,毕业论文20000字,答辩PPT) 摘 要 随着计算机的广泛应用,计算机程序设计语言也从初期的机器语言发展为汇编语言,以及现在的各种高级程序设计语言.而编译技 ...

  3. 最严谨的计算机语言p,用于PLC的华P语言编译器设计及实现.pdf

    2009年10月 沈阳理工大学学报 V01.28No.5 OFSHENYANGUGONGUNIVERSITYOct.2 第28卷第5期 TRANSACTIONS 0 09 文章编号:1003-1251 ...

  4. 在Windows平台如何选择C语言编译器?

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104995539 选 ...

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

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

  6. 【软件开发底层知识修炼】五 gcc-C语言编译器

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 文章目录 1.GCC与gcc 2.gcc的幕后工作 3.实用的gcc ...

  7. java c语言 for_Java能写C语言编译器吗

    用java是可以写语言编译器的,用任何语言工具写都可以.各语言开发工具间只有开发效率的差异,没有可行不可行的区别. 编译器其实就是一个翻译工具,它可以把代码直接翻译成二进制文件交给CPU执行(二进制指 ...

  8. c语言网页版在线编译器_C语言编译器IDEapp下载-C语言编译器IDE官方版下载v1.5.1 安卓版...

    c语言编译器IDE是专门为学习c语言的人专门打造的,解决了很多人身边没电脑的问题,这款软件是手机端的编译神器,用手机也可以学习c语言,软件中有很多详细的讲解原理,可以非常好的学习c语言,是初学者的好帮 ...

  9. c语言编译器app官网下载,c语言编译器

    C语言编译器,一款帮助用户快速在收集编辑C语言的办公软件.界面简单干净,编辑页面可以选择白天黑夜模式.每次退出都会自动保持编辑记录,下次打开直接继续编辑.还有C语言编辑资料可供用户学习. c语言编译器 ...

  10. C语言编译器不检查数组下标越界

    这两天被人问了一个问题说假如C/C++访问下表越界的数组元素会报错么,于是充满好奇心的我动手试了一下,WTF,果然没有报错,但是会给程序带来莫名其妙的结果(比如十次的循环但是变成了死循环,但八次却可以 ...

最新文章

  1. python 引用和对象理解
  2. 汇编语言的准备知识--给初次接触汇编者 之三
  3. mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试
  4. NPM服务器维修,npm run dev无法启动服务器
  5. JDBC ResultSet分析
  6. ug侧铣头编程_数控UG编程,四轴前倾角和侧倾角
  7. English Resources
  8. 异步fifo_面试必杀技:异步FIFO(上) CDC的那些事(5)
  9. 如何在Web App Project 或者 Web Site Project的App_Code 内使用 Profile/ProfileCommon
  10. csdn专用必杀技----谷歌浏览器插件
  11. 微信小程序“淘淘猜成语”开发教程(该成语接龙已上线,功能齐全)
  12. 数字版权管理 (DRM) 续
  13. c语言简单的图案设计,分形艺术图案设计
  14. stata陈强:第四章 stata操作基础
  15. java获得文件的md5码_java获取文件md5码
  16. Godaddy Web Hosting http 重定向至 https协议
  17. 群友(淡泊、明志)总结android面试题
  18. 格兰富Grundfos CM3-2 A-R-A-E-AVBE F-A-A-N
  19. 流体仿真中,六面体(Hex)网格的求解效率真的比四面体(Tet)高”很多”么?
  20. 三星苹果还能笑多久?联想挑战智能手机全球霸主

热门文章

  1. Linux中fstat、stat和lstat的用法与区别
  2. 世界数学史册上以***数学家命名的研究成果
  3. 温度传感器室温监控仪
  4. 2022-2028全球与中国防弹汽车玻璃市场现状及未来发展趋势
  5. MAT之SA:T1编写主函数法和T2Matlab自带的SA工具箱GUI法,两种方法实现对一元函数优化求解
  6. python连接oracle报错DPI-1047
  7. 将Vue项目代码打包成桌面应用
  8. 近十年来出现的计算机术语,近十年来科技英语翻译研究评述(2003—2012).doc
  9. PostgreSQL报表统计历史12月度数据,无数据补零
  10. 仿站长之家查询源码php,仿站长之家博客 织梦IT资讯博客源码 v1.0