C++_独立编译

独立编译

C++语言支持"独立编译separate compile"
比如,你想开发一个程序,这个程序里的所有的内容,你无需全部写到一个cpp文件里
	而是可以分解到许多的cpp文件里。 
	不同的cpp文件,在编译compile时,是完全独立的!!! 与其他cpp无任何关联
	
比如有1.cpp 和 2.cpp, 他俩共同组成了你的程序。
	# 比如他俩里面,都有int A=123;的全局变量,这肯定是报错的
	# 因为所有的子cpp,最终都要合并为'1个程序'里面
1,编译期间:  1.cpp -> 1.obj     2.cpp -> 2.obj
	这两个编译的过程,即生成目标obj文件的过程,是完全独立的!!!
	此时是不会报错的。  不同的cpp文件在编译期间,是不会和其他cpp文件互通的!
	# 编译的顺序,是未知的!!! 你不知道哪个cpp最先编译,最后编译!!
	# 并不说: 谁的cpp是实现谁先,谁的cpp是引用声明(extern)谁就后
2,链接link期间:  将所有的obj文件做一次link链接,生成exe

---------------------------------------------------------

举例:  
你的1.cpp里的'全局域'int A = 123; 	' 都是实现 '
	int func(){
    return 123; }   
你的2.cpp,3.cpp,main.cpp等等的'全局域'extern int A;	' 都是引用声明 '
	int func();
// 注意,你此时写: int A=456; int func(){return 8;} 都是报错的!!!
# 只要2.cpp里,写了这些"引用声明",那么你2.cpp里,就可以使用这些东西了
原理:
	2.cpp里的这些引用声明(其实现都在其他的cpp里),比如int func();'编译器在编译2.cpp'时,会生成一个(符号表symbol table)
		此时,这个"int func()",就会存入这个符号表中。
	在'进行链接LINK'时,
	

项目结构

1

/ 1.hpp:
#ifndef __1_HPP__
#define __1_HPP__
int func1(){
    DE("111"); return 1; }
int A = func1();
#endif

/ Main.cpp
#include "1.hpp"
int func2(){
    DE("222"); return 1; }
int B = func2();
int main(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值