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

编译语言 VS 解释型语言

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

1K20

c语言内部函数、外部函数多文件编译总结(vs2015编译环境)

函数只能被文件中其他函数所调用,其定义格式为: static int fun(int a, int b) 说明: (1)内部函数只能在本源文件中调用,它有局部化的功能,即防止外部文件使用同名函数时报错...2.外部函数 在定义函数时使用关键字extern修饰,则称其为外部函数,可供其他文件调用,其定义格式为: extern int fun(int a,int b) 说明: (1)C语言规定,如果定义函数时省略...二、多文件编译 ? 上图是官方的方法。 1.首先我们要搞清楚编译的规则,作为新手的笔者就因为不懂这个规则,搞了几天才搞懂。...(1)所有源文件(.c)都参加编译,所有头文件(.h)都不参加编译。   (2)#include“文件”在编译时把文件占领#include。

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

C语言编译过程

如果用一张图来表示: image.png 编译编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序...C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件 1.编译预处理 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理 [...例如在源程序中出现的LINE标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译C源程序的名称。预编译程序对于在源程序中出现的这些串将用合适的值进行替换。...如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,},+,-,*,\,等等。...4.汇编过程 汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。

1.9K20

叙述 C语言编译

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

1.7K10

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 _...链接 使用到了C标准库的东西“printf”,但是编译过程只是把源文件翻译成二进制而已,这个二进制还不能直接执行,这个时候就需要做一个动作,将翻译成的二进制与需要用到库绑定在一块。...-fPIC file1.c -c //这一步生成file1.o gcc -shared file1.o -o libtest.so

1.8K20

C语言笔记】C语言编译的过程

下面以windows环境下的test.c为例,test.c里的代码为: #include int main(void) { printf("This is a test program...2、预处理(Preprpcessing) 使用预处理器把源文件test.c经过预处理生成test.i文件,预处理用于将所有的#include头文件以及宏定义替换成其真正的内容。...预处理的命令为: gcc -E test.c -o test.i 上述命令中-E是让编译器在预处理之后就退出,不进行后续编译过程;-o是指定输出文件名。 预处理之后得到的仍然是文本文件。...3、编译(Compilation) 使用编译器将预处理文件test.i编译成汇编文件test.s。...汇编过程的命令为: gcc -c test.s -o test.o 上述命令中-c、-o让汇编器把汇编文件test.s转换成目标文件test.o。

12.1K30

C语言系列】C语言编译流程分析

前几天看了《程序员的自我修养——链接、装载与库》中的第二章“编译和链接”,主要根据其中的内容简单总结一下C程序编译的过程吧。...\n”); return 0; } 通常我们使用gcc来生成可执行程序,命令为:gcc hello.c,默认生成可执行文件a.out 其实编译(包括链接)的命令:gcc hello.c 可分解为如下4...保留所有的#pragma编译器指令,因为编译器需要使用它们 通常使用以下命令来进行预处理: gcc -E hello.c -o hello.i 参数-E表示只进行预处理 或者也可以使用以下指令完成预处理过程...$gcc –S hello.i –o hello.s 或者 $ /usr/lib/gcc/i486-linux-gnu/4.4/cc1 hello.c 注:现在版本的GCC把预处理和编译两个步骤合成一个步骤...gcc其实是后台程序的一些包装,根据不同参数去调用其他的实际处理程序,比如:预编译编译程序cc1、汇编器as、连接器ld 可以看到编译后的汇编代码(hello.s)如下: .file "hello.c

10.8K50

c语言编译器在线-c在线编译器(c语言在线编程)

c编译器-c语言编译器是干什么用的   本人不才,仅就个人意见谈谈:   1。...c语言编译器哪个好?   g++,icc.   ...-c++ source file,在头部加上   #   #   然后就可以编译c语言写的了   C++编程软件   这个永远没有统一的标准。   ...DEV C++:   他使用的是目前信息学竞赛常使用的C语言编译器 (gcc),软件本身很小,编译能力应该还行(本人用他不是很多,估计还不错),而且操作也是采用窗口的,用起来也比较方便。...VS 2005(Visual Studio 2005):(作者推荐)   他集合了很多开发工具在一个平台上面,支持很多的开发语言,软件比较大,我下载的包含MSDN在内的总共有3G多。

6.6K50

c语言编译

c语言编译器是一款涵盖丰富学习资料的软件,用户可以在线一键学习辅导c语言编译器在线,可以满足用户的学习需求,能够为用户带来优质的服务,随时都可以在软件上学习各种有趣编程知识。   ...软件特色   1、资源丰富   用户可以在软件上找到丰富的C语言教程,能够看到很多不同的编程资源,轻松地去学习;   2、不断更新   软件上的素材资源会不断地更新,可以让用户轻松地学习,能够在线学习到很多实用知识...;   3、满足需求   软件可以满足用户的学习需求,通过软件就可以直接去软件中学习,能学到自己没学过的;   4、功能完善   用户可以在线编译自己需要的编译的代码,支持编译多种不同的编程语言,让学习更方便...软件优势   - 编译迅速,软件的编译速度非常迅速,能够直接将编译完成的代码放在眼前,轻松查看;   - 智能联想c语言编译器在线,拥有联想功能,可以帮助用户快速地输入常用语句,不输完整也会有完整词;...  - 没有广告,使用软件的时候不会出现广告,能够轻松地使用,在软件上自由地编译学习。

2.1K10

C# 性能分析 反射 VS 配置文件 VS编译

本文分析在 C# 中使用反射和配置文件和预编译做注入的性能,本文的数据是为预编译框架,开发高性能应用 - 课程 - 微软技术暨生态大会 2018 - walterlv提供 本文通过代码生成工具,使用C#...这里的预编译的方法就是在编译的时候,通过 Roslyn 拿到程序集里的所有类,和正常写代码一样,写出所有的类的创建和注入。...,可以看到通过配置文件创建的方式比预编译慢 75 倍,而通过反射特定的类是慢 100 多倍 其他测试请看 C# 直接创建多个类和使用反射创建类的性能 C# 程序内的类数量对程序启动的影响 整个测试的工程我打包放在下面...,这个工程的创建代码很简单,我也直接放在下面 测试的工程 C# 性能分析 反射 VS 配置文件 VS编译-CSDN下载 如果觉得我的数据很诡异,那么请自己运行一下 创建工程的代码不包括创建测试的工程的框架...%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90-%E5%8F%8D%E5%B0%84-VS-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6-VS-%E9%

63440

C语言——Q编译和链接

• 多个.c⽂件单独经过编译编译处理⽣产对应的目标文件; • 注:在Windows环境下的⽬标⽂件的后缀是 .obj ,Linux环境下⽬标⽂件的后缀是 .o ;...在 gcc 环境下想观察⼀下,对 test.c ⽂件预处理后的.i⽂件,命令如下: gcc -E test.c -o test.i 预处理阶段主要处理那些源⽂件中#开始的预编译指令。...test.c 经过编译器处理⽣成 test.o add.c 经过编译器处理⽣成 add.o 我们在 test.c 的⽂件中使⽤了 add.c ⽂件中的 Add 函数和 g_val 变量。...我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个⽂件是单独编译的,在编译编译 test.c 的时候并不知道 Add...前⾯我们⾮常简洁的讲解了⼀个C的程序是如何编译和链接,到最终⽣成可执⾏程序的过程,其实很多内部的细节⽆法展开讲解。

8010

C语言程序编译和链接

如果再把编译器展开成3个过程,那就变成了下⾯的过程: 预处理(预编译) 在预处理阶段,源⽂件和头⽂件会被处理成为.i为后缀的⽂件。...生成test.i文件 编译  放的是汇编代码:(将.c文件转换为汇编代码) gcc -S test.i -o test.s 经过词法分析、语法分析、语义分析及优化,⽣成相应的汇编代码⽂件。...每个源⽂件都是单独经过编译器处理⽣成对应的⽬标⽂件。...test.c 经过编译器处理⽣成 test.o  add.c 经过编译器处理⽣成add.o  我们在 test.c 的⽂件中使⽤了 add.c ⽂件中的 Add 函数和 g_val 变量。...我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个⽂件是单独编译的,在编译编译 test.c 的时候并不知道 Add

8110

C语言---静态库VS动态库

C语言中,函数库文件分为两种类型,一种是静态库(库程序是直接注入目标程序的,不分彼此,库文件通常以.a结尾),另一种是动态库(库程序是在运行目标程序时(中)加载的,库文件通常以.so结尾),下面我们就探索一下这两种库文件的特点和使用方式吧...背景知识 我们要先了解一下源文件到可执行文件的编译过程如下图: ? 预编译编译是使用预编译器cpp进行处理.c源文件和.h头文件,最终生成一个.i的文件。...例如hello.c中的打印函数printf,这个函数不是凭空出现的,在链接的过程中就要连同对应库文件一起打包,最终可执行文件才能正常运行。 静态库VS动态库 静态库和动态库的载入时间是不一样的。...静态库是要编译进可执行文件的,在程序运行的环境中,并不需要静态库的存在。比如我们生成的静态库文件是libhello.a 需要编译的文件是main.c编译命令如下: gcc main.c -L ....需要注意的是 系统在运行程序的时候,需要知道动态库的名称和位置,这样才能加载,如果找不到动态库就会直接程序退出报错

8.5K43

C语言翻译环境:预编译+编译+汇编+链接详解

⼀个C语言的项目中可能有多个.c文件⼀起构建,那多个.c文件如何生成可执行程序呢? 多个.c文件单独经过编译器,编译处理生成对应的目标文件(后缀为.obj)。...在(Linux) gcc 环境下想观察一下,对 test.c 文件预处理后的.i 文件,命令如下: gcc -E test.c -o test.i 预处理阶段主要处理那些源文件中#开始的预编译指令。...就是根据汇编指令和机器指令的对照表⼀⼀地进行翻译,翻译成机器语言(二进制指令),也不做指令优化。...比如: 在⼀个C的项目中有2个.c文件( test.c 和 add.c ),代码如下 test.c 经过编译器处理生成 test.o add.c 经过编译器处理生成 add.o 我们在 test.c...我们在 test.c 文件中每一次使用 Add 函数和 g_val变量 的时候必须确切的知道 Add 和 g_val 的地址,但是由于每个文件是单独编译的,在编译编译 test.c 的时候并不知道 Add

10310
领券