MYYA

C语言编译出来的是object文件,里面的内容基本上包括:跟CPU类型相关的机器代码,这个代码当然在兼容的CPU上都是可以运行的常量,例如字符串等等符号表外部符号表,代码里面引用到的其他文件中的符号,例如printf这种外部标准库提供的函数。这需要等到链接的时候来解决。输出符号表,代码里面公开的可以被其他文件引用的符号,例如自己写的函数。这个文件的格式在不同操作系统上是不一样的。所以,虽然其中的机器码可以在CPU上直接执行,但是就算你写的是一个简单的HelloWorld,也需要用到很多的系统调用。你应该不会想自己去写一个磁盘引导程序,然后使用BIOS中断来初始化显卡进入图形模式,然后往显卡缓冲区里填入数据(当然你的程序里面还需要内置好一个ASCII字库,为了简单起见就不用矢量字库了,假设是点阵的吧),就为了在屏幕上显示一行字吧?当然,这还没有考虑任务调度、内存管理、输入输出、硬件抽象层这些操作系统的基本功能。而且,就算你的程序不用到任何输入输出,只是计算简单的1+1,一段机器码也不是那么简单地扔给CPU就能运行了,至少你得找个人替你“扔”这段代码吧,谁来调用你的main方法呢?这是CRuntimeLibrary干的事,你用C写的代码至少得链接到这个库上。这个库负责创建一个进程,然后调用你的main函数。而这个库在不同操作系统上以及不同的编译器上也是不同的。此外,假设你只是想写一个静态库,让在不同平台上的软件都能直接引用你写的一个函数,那也还需要跨越文件格式这个障碍,Unix上面用的是ELF格式,Windows用的是PECOFF。

C语言编译的作用是什么,C语言代码编译后是什么?相关推荐

  1. 0 在c语言中有什么作用,\0在c语言中代表什么?

    "\0"在c语言中代表"字符串结束符"."\0"的ASCII码为"0",也就是空字符:字符串总是以"\0&qu ...

  2. c语言注释的作用文百,C语言注释-C语言行注释-C语言注释块注释-嗨客网

    C语言注释教程 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性.同时,注释也是一个程序员必须要具有的良好编程习惯.我们应该首先将自己的思想通过注释先整理出来,再用代码去体现. 在 C语言注 ...

  3. 循环语句在c语言中的作用是什么,C语言中循环语句的使用

    C语言中的循环语句 在C语言中,有三种类型的循环语句: for语句.while语句和do While语句. 分别介绍如下: 1.for循环语句 for语句格式为: for(表达式1;表达式2;表达式3 ...

  4. c语言例题功能作用,一篇C语言面试题的汇总

    2015-03-21 06:30:02 阅读( 107 ) 1.    找错 void test1() { char string[10]; //string的长度应该设为11,要给"留出位 ...

  5. continue在c语言中什么作用,continue在c语言中什么意思?

    continue在c语言中是退出循环的意思,continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环. continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环.conti ...

  6. c语言开头的作用是什么,C语言为什么开头都加;#includestdio.h有什么作用?

    stdio.h 哪些 是 头文件,里面包含一些常用的 函数 例如 stdio.h里面有 scanf();printf()这些函数,没有stdio就不能用这些函数 在C语言家族程序中,头文件被大量使用. ...

  7. 循环语句在c语言中的作用是什么,C语言循环命令运用

    1.C语言的应用 随着计算机的普及用,越来越多的人感觉到现有的计算机的应用不能满足越来越多.越来越复杂的事物处理,所以希望自己能够根据所遇到不同的情况来设计.制作.开发相对灵活的控制程序.这样既可以满 ...

  8. 单片机c语言左移的作用,[转载]单片机c语言中的左移右移

    单片机c语言中的左移右移 左移 变量1 << 变量2 将变量1的二进制位值向左移动由变量2所指定的位数. 例如: a = 0x8f; // 10001111 a << 2; / ...

  9. c语言字符集的作用,1.属于C语言字符集中可显示字符的是()

    一.选项 1.属于C语言字符集中可显示字符的是() A.\ B.\n C.\t D.\b 2.不属于C语言字符集中的符号是() A.\ B.上下一点C.小于等于号 D.^ 3.下列选项中,不是转义字符 ...

最新文章

  1. 《深入理解Java虚拟机》笔记01 -- 运行时数据区
  2. (建议收藏)万字长文,帮你一招搞定产品经理面试-详解产品经理面试大全
  3. python怎样使用_Python如何合理使用assert(新手必读)
  4. Leet Code OJ 28. Implement strStr() [Difficulty: Easy]
  5. C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6
  6. 初识openwrt(上)
  7. mybatis中批量插入的两种方式(高效插入)
  8. 网页自动切换html css js,HTML页面自动清理js、css文件的缓存(自动添加版本号)_HTML/Xhtml_网页制作...
  9. java程序设计题库
  10. asp和php关系,php和asp对象的等价关系_PHP教程
  11. [CareerCup] 17.1 Swap Number In Place 互换位置
  12. 达梦数据库,查看表空间使用情况
  13. 排列组合的写法_数字排列组合公式写法介绍
  14. Acrobat右键菜单失踪了?Regsvr32无用?
  15. PLSQL无法粘贴复制
  16. 使用css做水印效果
  17. 【每日一题】039 手机尾数
  18. win10系统怎么禁用某个程序联网,阻止软件联网
  19. Clickhouse备份恢复方式概览
  20. Linux文件系统之链接文件

热门文章

  1. 毕业生自传----一次大胆的尝试,作别亚信
  2. Cisc和Risc哪一个更适合采用流水线技术来提高性能?
  3. 何为时间戳?时间戳的由来
  4. drill支持的数据类型
  5. CodeChef Chef and Digit Jumps 题解
  6. CF283E Cow Tennis Tournament
  7. 【现代密码学原理】——哈希函数(学习笔记)
  8. [导入]vbscript错误代码及对应解释大全/VBScript 语法错误
  9. 【聊天机器人测评】独立站插件用JivoChat和Zendesk哪个好?
  10. DiskView:图形化显示每个文件在硬盘上的物理位置