首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初学C语言如何选择合适的编译工具

什么是编译编译器(compiler)是一种计算机程序,它会将某种编程语言写成的源代码(原始语言)转换成另一种编程语言(目标语言)。...编译器将原始程序(source program)作为输入,翻译产生使用目标语言(target language)的等价程序。...有哪些常见的用于C语言编译器和集成开发环境(IDE) 编译器: 1.MSVC(Microsoft Visual C++ Compiler) MSVC是由微软公司开发的C语言编译器,它是Windows平台上最常用的编译器之一...4.Clang+LLVM Clang是由苹果公司开发的C语言编译器前端,LLVM是一个开源编译器基础设施项目,Clang使用LLVM作为其后端。...注 有许多人喜欢去探索使用Visual Studio Code,其实这只是一款编辑器,本身没有编译器的功能,因此它本身也不是一款C语言编译器,但是它有丰富的插件功能,可以配成一个用于执行C语言程序的编译

10210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    gcc编译如何使用_gcc编译器用什么语言写的

    一、gcc编译流程 GCC编译器在编译一份C代码的时候,需要经过以下4个步骤: 预处理(preprocessing):对 .c 源文件进行预处理,生成 .i 文件。...编译(compilation):对 .i 文件进行编译,生成 .s 汇编文件。 汇编(assembly):对 .s 文件进行汇编,生成 .o 目标文件。...-S:对源文件进行预处理、编译,不进行汇编。结果以 .s 文件形式保存,与 .c 源文件同名。 -c:对源文件进行预处理、编译、汇编,不进行链接。...-save-temps:保存编译过程中所产生的所有中间文件。...-Wall:打开编译器的警告标志,尽可能多的输出警告信息。强烈建议,编译时始终带上 -Wall 选项。 -Werror:将所有的警告当成错误处理,必须消除警告才能继续编译

    1.7K40

    编程语言|编译原理

    关于昨天的思考: 编译器的各个步骤有哪些? 能否省略其中某个步骤 编译器是怎样解析代码的? 什么是语法树? 怎样生成目标程序? 语义分析和语法分析有什么不同? 中间代码是怎么生成的?...编译器怎样记录源程序中使用的变量的名字? 编译构造工具有哪些? 今天的是讲一讲编程语言,为什么会有这么多不同的编程语言?为什么还会有新的编程语言? ?...当前: 有几千种程序设计语言,分类方式很多,其中按照语言的代可以这样分类: 第一代:机器语言 第二代:汇编语言 第三代:Fortran,Cobol,Lisp,C,C++,C#,Java(高级程序设计语言...第五代:基于逻辑和约束的语言,比如Prolog,OPS5 另外一种分类是分成 强制式语言 C,C++,JAVA,C# 声明式语言 ML,HASKELL,PROLOG 冯诺依曼语言 FORTRAN,C 面向对象语言...C++,C#,JAVA,Ruby 脚本语言 AWK,JavaScript ,Perl ,PHP,Python ,Ruby ,TCL 编程语言编译器有关系么?

    2K30

    C语言编译过程

    如果用一张图来表示: image.png 编译编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序...如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,},+,-,*,\,等等。...后一种类型的优化同机器的硬件结构密切相关,最主要的是考虑是如何充分利用机器的各个硬件寄存器存放的有关变量的值,以减少对于内存的访问次数。...另外,如何根据机器硬件执行指令的特点(如流水线、RISC、CISC、VLIW等)而对指令进行一些调整使目标代码比较短,执行的效率比较高,也是一个重要的研究课题。...4.汇编过程 汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。

    1.9K20

    叙述 C语言编译

    @(C语言)[code] 用一段简单的代码,探讨下从C代码到最终可执行文件的编译过程,追根究底。 偶尔了解下底层,也就没那么多莫名其妙了。...工作原因有时候会用python写写测试工具,感受到其快速实现应用的便利,但由于偏底层开发,主力语言依然是C。对于开发语言没有什么优劣概念,在特定的情景下哪种实现更佳就用哪种,工具合适才是最好的。...个人开发环境 ubuntu 14.04 ---- 编译的作用 相比python,lua等脚本语言解释执行方式,编译C是为了提高程序的运行效率。...把对用户友好的语言文本编译成对机器友好的特定指令直接执行,而不是执行时一条一条通过解释器解析执行,很大地提高了执行的效率。对应C主要用于底层,系统层次,追求高性能表现,亦或者,平台资源限制。...编译的过程 gcc 的编译流程分为四个步骤: 计算机系统设计基本原则:层次化和抽象。 ? 编译flow 编写一个最简单的程序 hello.c,以此为例,看看各个过程做了什么事情。

    1.8K11

    C语言编译过程

    处理条件预编译 #if, #ifdef, #if, #elif,#endif 处理“#include”预编译指令,将包含的“.h”文件插入对应位置。这可是递归进行的,文件内可能包含其他“.h”文件。...保留#pragma编译器指令。(1)设定编译器状态,(2)指示编译器完成一些特定的动作。...代表接下来的文本应该被当做包含一个隐式的extern "C 块 编译 1.高级语言->汇编代码 命令 gcc -S a.i -o a.s .file "a.c" .globl _...动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。...Gcc在编译时默认使用动态库。 命令gcc head.o a.o -o a.exe 得到的a.exe可直接运行。

    1.9K20

    【C语言】预编译

    __DATE__:表示文件被编译的日期。 __TIME__:表示文件被编译的时间。 __STDC__:如果编译器遵循的是ANSIC,其中值为1,不然就是未定义。...条件编译 条件编译一句话:满足条件就编译,不满足条件就不编译。 在编译一个程序的时候,我们如果将一条语句或者是一组的语句编译再或者是放弃是非常的方便的。因为我们有条件编译的指令。...比如↓ 调试行的代码,删除可惜,保留又碍事,所以我们可以选择性的编译。 举出下面的例子代码如下↓ 在这里会举出两个例子①参与编译、②不参与编译。...有的是为了进行一个版本之间的维护的,例如:有商业版和免费版等...当然我们还有可能使用条件编译完成其它的事情。 ⒉条件编译如何使用? 在上述条件编译讲解当中我们也说过的,这里就不在描述了。...⒊条件编译在哪些地方使用? 通常用于中大型项目当中会使用到条件编译以及版本之间的维护(某某软件完全版和精简版)当然条件编译还可以完成一些其它的事情。 ★结论⇢条件编译的本质是对代码进行裁剪。

    87210

    【Flutter】Dart 语言 ( Dart 语言特征 | JIT 即时编译 | AOT 静态编译 )

    Dart 语言特征 II . JIT 即时编译 III . AOT 静态编译 I . Dart 语言特征 ---- 1 ....Dart 语言特征 : ① 语言类型 : 强类型语言 ; ② 编译类型 : JIT 即时编译 ; ( 编译类型有 JIT / AOT 两种类型 ) 2 ....语言类型 : 强类型与弱类型语言 ; ① 强类型语言 : 每个变量都要指定类型 ; ② 弱类型语言 : 变量的类型可以不事先指定 ; II ....语言中调用 AOT 语言 , 能大幅提高效率 , 如 Java 中使用 JNI 调用 C ; ② 可移植性 : JIT 类型的语言可移植性比较强 , 如 Java , 使用 Java 编译出的字节码文件...AOT 静态编译 ---- AOT 编译类型 : 静态编译 , 在开发时就要将代码编译成机器码 ; 不可跨平台移植 ; 运行时效率很高 ; ① 运行时效率高 : 在开发阶段 , 将代码编译成了机器码 ,

    46810

    解释型语言编译语言

    在计算机编程中,解释型语言编译语言是两种常见的语言类型,两者的区别在于代码的执行方式。一、概念解释型语言解释型语言是指程序在执行时会逐行解释源代码,然后直接运行解释后的代码。...解释型语言的典型代表有Python、JavaScript、Ruby等。编译语言编译语言是指程序在执行前需要经过编译的过程,将源代码编译成机器语言可执行文件,然后再进行运行。...在编译语言中,程序的执行效率较高,但是编译的过程较为繁琐。编译语言一般都需要一个编译器,它负责将源代码编译成可执行文件。编译语言的典型代表有C、C++、Java等。...由于编译语言可以进行底层的操作,如操作硬件等,因此可扩展性更强。缺点:(1)编译速度慢。由于编译语言需要经过编译的过程,因此编译速度相对较慢。(2)开发效率低。...编译语言的应用场景由于编译语言运行效率高,安全性高,可扩展性强,因此常用于开发底层系统和大型应用程序,如操作系统、编译器、数据库等。

    85591

    编译语言 VS 解释型语言

    文章正文 那么到底什么是编译语言,什么是解释型语言呢?他们之间有什么共同点和区别呢?...概念 编译语言代表有:C语言,C++、Object-C以及最近很火的苹果新语言swift 通常都会对源代码进行编译,生成可以执行的二进制代码,执行的是编译后的结果 解释型语言代表有:JavaScript...因为编译只做一次,运行时不需要编译,所以编译语言的程序执行效率高。可以脱离语言环境独立运行。 缺点:编译之后如果需要修改就需要整个模块重新编译。...区别2:运行的时候是否需要编译编译语言运行的是最终的二进制代码了,所以不在需要编译器在身边守护。...但解释型语言则不然,它是边解释、边运行,所以运行的时候很可能还有部分代码没有解释好,所以需要编译器守护(解释型语言把该工具叫:解释器)。那么编译器在哪里?

    1.3K20

    解释型语言编译语言

    计算机不能直接理解的高级语言,只能直接理解机器语言,所以必须把高级语言防疫成机器语言,计算机才能执行高级语言的编写的程序,翻译的方式两种: 特征 1、解释型语言: 解释型语言的程序不要编译,在运行程序时进行翻译...2、编译语言编译语言就是编译的时候直接编译成机器可执行的(.exe.dll.ocx)编译和执行是分开的,但是不能跨平台,比如exe文件,以后要运行就不需要重新编译了,只做一次翻译,所以编译语言的程序效率高...2、编译语言: (1)程序运行的控制权在用户程序 (2)编译好的语言由于执行速度快,同等条件下对系统的要求比较低,因此开发操作系统、大小应用程序、数据库系统等使用编译语言,如:c、c++、object-c...其封装底层代码,程序严重依赖平台,占用了大量系统资源(解释器和用户程序) 2、编译语言: 优点:运行速度快,代码效率高,编译后程序不可修改(oc动态运行时方案排除),保密性好。...缺点:代码需要经过编译才可运行,可移植性差,只能在兼容的操作系统上运行

    70830

    Go语言之条件编译

    这种情况下,我们希望可以编译不同的版本,旧代码编译的版本用来做产品发布,没有改好的新代码用来做测试,等测试通过之后,再把旧代码移除。...在C和C++中,我们可以很轻松的完成这件事情,那就是使用“预编译宏”#ifndef XXX #define XXXX #endif,但是Go语言中,我们该如何操作呢?...条件编译: Go语言中也有这种类似的方法,叫做条件编译,不过功能要比C和C++中弱了很多,有两种方式:build tags和文件后缀。...例子: 编译结果: 1). go build // 不加编译tags=pretest的情况,结果如下所示: 2). go build tags=pretest //指定编译tag的情况下,结果如下所示...2.通过文件后缀实现 具有_GOOS.go后缀的go文件在编译的时候会根据当前平台来判断是否将该文件导入并编译;同样适用于处理器架构判断_GOARCH.go。

    49120

    【C语言编译和链接

    一、翻译环境和运行环境 在c语言的实现中,存在两个环境 翻译环境:在这个环境中源代码被转换成可执行的二进制指令 运行环境:实际执行代码 二、翻译环境 翻译由编译和链接两个过程组成 编译又可以分为预处理...、编译、汇编三个过程 一个c语言的项目一般是由多个.c文件一起构建的,多个.c文件通过如下步骤生成可执行程序: ①多个.c文件单独经过编译器,编译处理生成对应的目标文件 ②多个目标文件和链接库一起经过链接器处理生成最终的可执行程序...预处理 在预处理阶段,源文件和头文件都会被处理成为.i为后缀的文件 预处理阶段主要处理源文件中#开始的预编译指令,规则如下: ①将所有的#define删除,并展开所有的宏定义 ②处理所有的条件编译指令...③处理 #include 预编译指令,将包含的头文件的内容插入到该预编译指令的位置。...这个过程是递归进行的,因为包含的头文件可能包含其他文件 ④删除所有的注释 ⑤添加行号和文件名标识,方便后续编译器生成调试信息 ⑥保留所有的 #pragma 的编译器指令,后续编译器会使用 经过预处理后的

    8210

    【C语言编译与链接

    前言 我们想一个问题,我们写的C语言代码都是文本信息,电脑能直接执行c语言代码吗?...肯定不能啊,计算机能执行的是二进制指令,所以将C语言转化为二进制指令需要一段过程,这篇博客讲一下编译与链接,来一起探讨C语言如何转化为二进制指令的。...其实翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。...一个C语言的项目中可能有多个 .c 文 件一起构建,那多个 .c 文 件如何生成可执行程序呢? • 多个.c文件单独经过编译器,编译处理生成对应的目标文件。...结束语 本篇博客总结了编译和链接涉及C语言的有关知识,其实很多内部的细节无法展开总结。

    11310

    C语言---编译和链接

    其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编 译)、编译、汇编三个过程。...编译可以分为三个过程:预编译编译、汇编 每个源文件经过编译器的编译处理生成了对应的.obj文件(目标文件) 每个.c文件经过编译器的编译处理单独生成对应的目标文件 //声明外部函数 extern int...20; int c = add(a, b); printf("%d\n", c); return 0; } ⼀个C语⾔的项⽬中可能有多个 .c ⽂件⼀起构建,那多个 .c ⽂件如何...• 多个.c⽂件单独经过编译器,编译处理⽣成对应的⽬标⽂件。...: 将c语言中的代码转换成汇编代码 在这个阶段做到了 词法分析、语法分析、语义分析及优化这几个步骤 词法分析 对于下面的代码,编译器会进行怎么样的语法分析呢?

    7110
    领券