C语言编译的作用是什么,C语言代码编译后是什么?
MYYA
C语言编译出来的是object文件,里面的内容基本上包括:跟CPU类型相关的机器代码,这个代码当然在兼容的CPU上都是可以运行的常量,例如字符串等等符号表外部符号表,代码里面引用到的其他文件中的符号,例如printf这种外部标准库提供的函数。这需要等到链接的时候来解决。输出符号表,代码里面公开的可以被其他文件引用的符号,例如自己写的函数。这个文件的格式在不同操作系统上是不一样的。所以,虽然其中的机器码可以在CPU上直接执行,但是就算你写的是一个简单的HelloWorld,也需要用到很多的系统调用。你应该不会想自己去写一个磁盘引导程序,然后使用BIOS中断来初始化显卡进入图形模式,然后往显卡缓冲区里填入数据(当然你的程序里面还需要内置好一个ASCII字库,为了简单起见就不用矢量字库了,假设是点阵的吧),就为了在屏幕上显示一行字吧?当然,这还没有考虑任务调度、内存管理、输入输出、硬件抽象层这些操作系统的基本功能。而且,就算你的程序不用到任何输入输出,只是计算简单的1+1,一段机器码也不是那么简单地扔给CPU就能运行了,至少你得找个人替你“扔”这段代码吧,谁来调用你的main方法呢?这是CRuntimeLibrary干的事,你用C写的代码至少得链接到这个库上。这个库负责创建一个进程,然后调用你的main函数。而这个库在不同操作系统上以及不同的编译器上也是不同的。此外,假设你只是想写一个静态库,让在不同平台上的软件都能直接引用你写的一个函数,那也还需要跨越文件格式这个障碍,Unix上面用的是ELF格式,Windows用的是PECOFF。
C语言编译的作用是什么,C语言代码编译后是什么?相关推荐
- 0 在c语言中有什么作用,\0在c语言中代表什么?
"\0"在c语言中代表"字符串结束符"."\0"的ASCII码为"0",也就是空字符:字符串总是以"\0&qu ...
- c语言注释的作用文百,C语言注释-C语言行注释-C语言注释块注释-嗨客网
C语言注释教程 用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性.同时,注释也是一个程序员必须要具有的良好编程习惯.我们应该首先将自己的思想通过注释先整理出来,再用代码去体现. 在 C语言注 ...
- 循环语句在c语言中的作用是什么,C语言中循环语句的使用
C语言中的循环语句 在C语言中,有三种类型的循环语句: for语句.while语句和do While语句. 分别介绍如下: 1.for循环语句 for语句格式为: for(表达式1;表达式2;表达式3 ...
- c语言例题功能作用,一篇C语言面试题的汇总
2015-03-21 06:30:02 阅读( 107 ) 1. 找错 void test1() { char string[10]; //string的长度应该设为11,要给"留出位 ...
- continue在c语言中什么作用,continue在c语言中什么意思?
continue在c语言中是退出循环的意思,continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环. continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环.conti ...
- c语言开头的作用是什么,C语言为什么开头都加;#includestdio.h有什么作用?
stdio.h 哪些 是 头文件,里面包含一些常用的 函数 例如 stdio.h里面有 scanf();printf()这些函数,没有stdio就不能用这些函数 在C语言家族程序中,头文件被大量使用. ...
- 循环语句在c语言中的作用是什么,C语言循环命令运用
1.C语言的应用 随着计算机的普及用,越来越多的人感觉到现有的计算机的应用不能满足越来越多.越来越复杂的事物处理,所以希望自己能够根据所遇到不同的情况来设计.制作.开发相对灵活的控制程序.这样既可以满 ...
- 单片机c语言左移的作用,[转载]单片机c语言中的左移右移
单片机c语言中的左移右移 左移 变量1 << 变量2 将变量1的二进制位值向左移动由变量2所指定的位数. 例如: a = 0x8f; // 10001111 a << 2; / ...
- c语言字符集的作用,1.属于C语言字符集中可显示字符的是()
一.选项 1.属于C语言字符集中可显示字符的是() A.\ B.\n C.\t D.\b 2.不属于C语言字符集中的符号是() A.\ B.上下一点C.小于等于号 D.^ 3.下列选项中,不是转义字符 ...
最新文章
- 《深入理解Java虚拟机》笔记01 -- 运行时数据区
- (建议收藏)万字长文,帮你一招搞定产品经理面试-详解产品经理面试大全
- python怎样使用_Python如何合理使用assert(新手必读)
- Leet Code OJ 28. Implement strStr() [Difficulty: Easy]
- C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6
- 初识openwrt(上)
- mybatis中批量插入的两种方式(高效插入)
- 网页自动切换html css js,HTML页面自动清理js、css文件的缓存(自动添加版本号)_HTML/Xhtml_网页制作...
- java程序设计题库
- asp和php关系,php和asp对象的等价关系_PHP教程
- [CareerCup] 17.1 Swap Number In Place 互换位置
- 达梦数据库,查看表空间使用情况
- 排列组合的写法_数字排列组合公式写法介绍
- Acrobat右键菜单失踪了?Regsvr32无用?
- PLSQL无法粘贴复制
- 使用css做水印效果
- 【每日一题】039 手机尾数
- win10系统怎么禁用某个程序联网,阻止软件联网
- Clickhouse备份恢复方式概览
- Linux文件系统之链接文件