购物网站app开发多少钱,wordpress文章选项卡,营销型网站模版,开发工具设置控件格式C语言 前言说实话#xff0c;很多人做了很久的C/C,也用了很多IDE#xff0c;但是对于可执行程序的底层生成一片茫然#xff0c;这无疑是一种悲哀#xff0c;可以想象到大公司面试正好被问到这样的问题#xff0c;有多悲催不言而喻#xff0c;这里正由于换工作的缘故… C语言 前言 说实话很多人做了很久的C/C,也用了很多IDE但是对于可执行程序的底层生成一片茫然这无疑是一种悲哀可以想象到大公司面试正好被问到这样的问题有多悲催不言而喻这里正由于换工作的缘故所以打算系统的把之前用到的C/C补一补。 总述 从一个源文件(.c)到可执行程序到底经历了哪几步我想大多数的人都知道到时到底每一步都做了什么我估计也没多少人能够说得清清楚楚明明白白。 其实总的流程是这样的。C语言 (1)编辑hello.c#include #include int main(){ printf(hello world!); return 0;}(2)预处理预处理过程实质上是处理“#”将#include包含的头文件直接拷贝到hell.c当中将#define定义的宏进行替换同时将代码中没用的注释部分删除等具体做的事儿如下(1)将所有的#define删除并且展开所有的宏定义。说白了就是字符替换(2)处理所有的条件编译指令#ifdef #ifndef #endif等就是带#的那些(3)处理#include将#include指向的文件插入到该行处(4)删除所有注释(5)添加行号和文件标示这样的在调试和编译出错的时候才知道是是哪个文件的哪一行(6)保留#pragma编译器指令因为编译器需要使用它们。加C/C学习交.流群获取C语言、C、Windows高级编程MFC框架编程、QT框架编程Linux应用程序开发Linux内核研究等系统学习路线更有进阶干货的直播免费学习权限 都是大牛带飞 让你少走很多的弯路的 群...号是 787190917gcc -E hello.c -o a.c可以生成预处理后的文件。通过查看文件内容和文件大小可以得知a.c讲stdio.h和stdlib.h包含了进来。C语言 (3)编译编译的过程实质上是把高级语言翻译成机器语言的过程即对a.c做了这些事儿(1)词法分析(2)语法分析(3)语义分析(4)优化后生成相应的汇编代码从 高级语言-汇编语言gcc -S hello.c -o a.s可以生成汇编代码C语言 汇编代码如下。.file hello.c .section .rodata.LC0: .string hello world! .text .globl main .type main, functionmain:.LFB0: .cfi_startproc pushl %ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 movl %esp, %ebp .cfi_def_cfa_register 5 andl $-16, %esp subl $16, %esp movl $.LC0, (%esp) call puts movl $0, %eax leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc.LFE0: .size main, .-main .ident GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 .section .note.GNU-stack,