C++小结-编译原理
来源:互联网 发布:金百福软件使用说明书 编辑:程序博客网 时间:2024/04/30 21:54
看了一些关于C++的文章,暂且先记录一下自己的想法:
C++编译原理(以VS为例):
1、预编译(C++代码(有宏)---->C++代码(无宏)):编译器解析宏,将代码中存在宏的代码替换为宏定义的字符、C++的inline(内联)函数也是在此时替换的。
此时编译器是否已经分析出了cpp文件的信息,如cpp编译后的文件运行时需要的大小,cpp文件中每个函数的大小之类的信息呢?(问题0)
2、编译(C++代码(无宏)------->汇编语言):编译器将C++代码解释为汇编语言,编译以一个cpp文件为单位,此时每个cpp文件包含(#include)的.h文件也会包含在其中,#ifndef#define的作用就是在此时(防止头文件的重复包含)。
在使用VS的时候,我们没有看到汇编语言的文件,但它的确是存在的,调出方法:
1)VS2005:
3、汇编(汇编语言------------------>机器码(.obj文件)):编译器调用自带的汇编工具将汇编语言翻译为机器码。
此时编译器应该已经分析出现了未解决符号表,导出符号表和地址重定向表这三张表,但这三张表是如何被编译器分析出的呢?(分析过程?问题2)这三张表在.obj文件中以什么形式存在?(.obj的结构是什么,问题3)
4、链接(.obj文件---------------------->exe文件/dll文件):C++的编译是已cpp文件为单位的,多少个cpp文件生成多少个对应的.obj文件,此时编译器负责为每个.obj文件分配其在exe文件中的位置(可能是预编译的时候分析出来的),然后根据.obj文件中的那三张表,为.obj文件之间互通有无,最后形成一个exe/dll文件。
C++编译原理(以VS为例):
1、预编译(C++代码(有宏)---->C++代码(无宏)):编译器解析宏,将代码中存在宏的代码替换为宏定义的字符、C++的inline(内联)函数也是在此时替换的。
此时编译器是否已经分析出了cpp文件的信息,如cpp编译后的文件运行时需要的大小,cpp文件中每个函数的大小之类的信息呢?(问题0)
2、编译(C++代码(无宏)------->汇编语言):编译器将C++代码解释为汇编语言,编译以一个cpp文件为单位,此时每个cpp文件包含(#include)的.h文件也会包含在其中,#ifndef#define的作用就是在此时(防止头文件的重复包含)。
在使用VS的时候,我们没有看到汇编语言的文件,但它的确是存在的,调出方法:
1)VS2005:
项目 ---》属性 ---》 配置属性 ---》 c/c++ ---》 输出文件 ---》 右边内容项:汇编输出 ---》带源代码的程序集(/FAs )。
这样在项目里面生成后缀为*.asm 的文件(汇编文件)。里面还有注释,有利于分析。
但是.h文件的内容声明在汇编文件中是以什么形式存在呢?(汇编文件的结构是什么,问题1)
此时编译器应该已经分析出现了未解决符号表,导出符号表和地址重定向表这三张表,但这三张表是如何被编译器分析出的呢?(分析过程?问题2)这三张表在.obj文件中以什么形式存在?(.obj的结构是什么,问题3)
4、链接(.obj文件---------------------->exe文件/dll文件):C++的编译是已cpp文件为单位的,多少个cpp文件生成多少个对应的.obj文件,此时编译器负责为每个.obj文件分配其在exe文件中的位置(可能是预编译的时候分析出来的),然后根据.obj文件中的那三张表,为.obj文件之间互通有无,最后形成一个exe/dll文件。
0 0
- 编译原理作业小结
- C++小结-编译原理
- C/C++编译原理
- C的编译原理
- c编译原理
- c编译原理简介
- C语言编译原理
- C编译原理
- c/c++编译原理
- C/C++编译链接原理
- C语言编译原理简介
- C语言编译原理介绍
- C语言编译原理简介
- C语言编译原理分析
- 【转】C/C++编译原理
- C语言编译原理简介
- c/c++的编译原理
- c/c++程序的编译过程小结
- Js获取当前日期时间及其它操作
- android数据持久化 SharedPreferences
- 汇编---call & ret
- 1686 Oulipo【kmp】
- OSG updateTraversal(更新遍历)
- C++小结-编译原理
- hdu3722Card Game KM算法
- 高效使用你的Xcode
- Qt 解析EXcel文件
- 《哪来的天才》读书笔记
- 使用AcceptEx方法的完成端口
- hdu3315My Brute KM算法
- SQL公用方法-根据字符串拆分成数组
- Codeforces 467C George and Job(dp)