到目前为止,未出错的认识,或者出错后更新的认识,并不保证正确,但目前是有效的。
1,分离编译认识
编译过程----预处理,编译,汇编,连接。
预处理阶段,预处理项被解析,和.h被嵌入到c文件中。
所以,1)预处理项不受作用域限制,从定义起到文件末尾,或解定义,例如#define
2)C文件是核心 ,预处理过后应该只剩c文件了,所以好习惯是模块文件的,H文件不要加各种头文件,能加在c文件的都加在c文件。不然编译出错都不知道哪里出问题
3)没有3了
编译阶段,C文件被翻译为汇编代码。
汇编阶段,汇编代码被翻译为对应二进制文件
连接阶段,各文件被连接为一个工程文件。
累了不写了,脑子内存不够了,打算换个苹果的操作系统,好好过日子。
猜想,com之类的是在 汇编或者链接阶段实现?
---------
@2017-11-2,问题vs各阶段生成了哪些文件
---源由,学dll的时候发现用到了lib,但是感觉lib不生成dll也有啊。静态连接,动态连接具体细节是啥啊?---惠惠大佬说有三种,半静态
预处理
编译
---
汇编
---obj
连接
exe dll
lib pdb obj 等等
--------------又
看了下lib在普通情况下不生成,看项目看错乱了。
那么所谓的三种也是指dll了,另开一篇,mdzz了
@2017-12-16 今天重新看c++ 编译阶段 http://zh.cppreference.com/w/cpp/language/translation_phases