一个c程序的生成要经历以下步骤: 
1.编写文本代码,生成c或cpp文件,这时候它还是文本的; 
2.编译,就是compile,由c编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通过。如若无错,则生成中间代码,扩展名为obj,此时它便是二进制的了; 
3.连接,在汇编里称link,在c里叫生成,即build,它的作用是生成可执行的exe文件。由于一个程序的源码可由多个文件组成。这些文件在第二步 中分别编译,生成各自的目标文件,这一步的作用便是将这些obj文件,以及程序中需要的其它库文件(dll除开),统一到一个文件中来,形成单个的exe 文件。此exe文件便可以在操作系统下直接运行了。 
上述第二步做完中间代码生成的工作后还有个代码优化,这里就不详讲了。

compile、build分别对应编译和连接这两个过程。execute的意思是执行,即生成了exe文件后运行它。如果你的程序有修改,点这一项它会 弹出窗口问你是否重新编译和连接,也就是它可以自动把前面的工作都做了。也就是说,vc菜单里的execute功能如下: 
1.程序有修改时,或者没有做前面的编译连接工作时 
execute=compile+build+执行; 
2.程序编译连接好后 
execute仅仅是执行,不再做前面两项工作。 
当程序有修改时,选择execute只重编译和连接有改动的内容,但这样做有时候会出错,这时可选择build菜单下的rebuild all,重新编译、连接所有文件。

总之,c程序的生成可图示如下: 
编写源代码->编译->连接,也叫生成->运行 
对应的各个阶段处理的文件的扩展名为: 
c或cpp->obj->exe

c程序是编译执行的,还有一种程序是解释执行的,如java,它的源文件经过编译后形成扩展名为class的中间代码,之后不做连接生成exe文件,而是直接将这种.class的中间代码拿到java虚拟机平台上,由解释器解释执行。这种方式效率较低,但较灵活。

compile,build和execute的区别的更多相关文章

  1. ExecutorService中submit()和execute()的区别

    在使用java.util.concurrent下关于线程池一些类的时候,相信很多人和我一样,总是分不清submit()和execute()的区别,今天从源码方面分析总结一下. 通常,我们通过Execu ...

  2. 【多线程 5】线程池的类型以及submit()和execute()的区别

    就跟题目说的一样,本篇博客,本宝宝主要介绍两个方面的内容,其一:线程池的类型及其应用场景:其二:submit和execute的区别.那么需要再次重申的是,对于概念性的东西,我一般都是从网上挑选截取,再 ...

  3. Build step 'Execute shell' marked build as failure解决

    今天jenkins构建时运行脚本报错如下: Build step 'Execute shell' marked build as failure 脚本没问题后来看了下原因是磁盘空间不足导致报错,清除下 ...

  4. Build step 'Execute Windows batch command' marked build as failure

    坑爹的Jenkis,在执行windows命令编译.NET项目的时候命令执行成功了,但是却还是报了这样一个错: Build step 'Execute Windows batch command' ma ...

  5. 线程池的类型以及执行线程submit()和execute()的区别

    就跟题目说的一样,本篇博客,本宝宝主要介绍两个方面的内容,其一:线程池的类型及其应用场景:其二:submit和execute的区别.那么需要再次重申的是,对于概念性的东西,我一般都是从网上挑选截取,再 ...

  6. Jenkins Build step 'Execute shell' marked build as failure

    问题出现: Jenkins一直都构建成功,今天突然报错:Jenkins Build step 'Execute shell' marked build as failure 问题原因: By defa ...

  7. Java 学习笔记 (五) Java Compile\Build\Make的区别

    以下内容引自: http://blog.51cto.com/lavasoft/436216 Compile.Make和Build的区别 原创leizhimin2010-11-30 11:30:20评论 ...

  8. Android Project和app中两个build.gradle配置的区别

    Android 开发也挺长时间了,从开始就使用的AndroidStudio开发,但是说下来其实自己对AS(AndroidStudio简称)还真的是不了解不深入.好吧,其实我只知道AS是一个相当强大的工 ...

  9. Android Studio的project中两个build.gradle配置的区别

    一般创建一个android项目后回出现两个gradle: build.gradle(Project):用来配置整个工程的 build.gradle(app):一个是用来配置app的 对compile和 ...

随机推荐

  1. Mysql String Functions

    SUBSTRING_INDEX(str,delim,count) 按标识符截取指定长度的字符串 mysql); -> 'www.mysql' mysql); -> 'mysql.com' ...

  2. Xcode如何打包ipa安装包

    http://jingyan.baidu.com/article/ceb9fb10f4dffb8cad2ba03e.html

  3. 详解KMP算法

    转载注明出处:http://www.cnblogs.com/yjiyjige/p/3263858.html 什么是KMP算法: KMP是三位大牛:D.E.Knuth.J.H.Morris和V.R.Pr ...

  4. php 计算两个日期之间的差,得出:年月日时分秒

    <?php$time1 = "2008-6-15 11:49:59";//第一个时间$time2 = "2007-5-5 12:53:28";//第二个时 ...

  5. C#获取程序路径

    // 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. System.Diagnostics.Process.G ...

  6. Convert.ChangeType转换泛型的性能损失测试

    经常要传入参数包,当时一直是用泛型+ChangeType解决的.测试了下,看来这样确实慢了. 另外,可能都会认为Release发布之后会被优化掉.但测试了Release和Debug结果一样慢,比较失望 ...

  7. Unity Shader中自定义枚举类型

    效果 脚本: Properties { _MainTex ("Texture", 2D) = "white" {} [Enum(Enum1,,Enum2,)]_ ...

  8. size()弃用

    size() 方法在 jQuery 版本 1.8 中被废弃. 请使用 length 属性代替.

  9. iOS—最全的真机测试教程

    准备 开发者账号 自从Xcode7 出来之后,一般的真机测试不需要开发者账号,也就不需要看这篇教程,只有app具有“推送”等功能的时候,要真机测试就必须要开发者账号和设置证书.苹果只是让你体验一下它的 ...

  10. div模拟表格使用display

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...