C++头文件和编译单元

 
C++的头文件中不应该有定义,只能有声明,特别是设计到变量的定义时,变量只能在某个CPP文件中定义,不能在h文件中定义,在h文件中定义的后果是这个h文件只能被一个cpp文件包含。
//dc。H文件
Extern int gl_counter;
//main.cpp文件
#incude”dc.h”
Int gl_counter;
//fun.cpp
#incllude”dc.h”
Void f()
{
***************
Gl_counter
***************
}
注意全局变量在cpp文件中只能且必须被定义一次。H文件中的extern ****只是声明,不是定义。定义的语义动作是要给变量分配存储空间。
       C++的编译是分别对每个编译单位进行编译生成,obj的二进制文件,然后链接各个编译模块形成的obj生成可执行模块。
       如果将变量的定义放在h头文件中那么在编译时没有错误,而在链接时侧会出现链接错误,这种错误微软的编译器有时会发现有时不会发现(如果选用rebuild all选项进行编译那么一定会发现重复定义),而在linux下用g++则一定会发 现,这可能是linux下没有用到增量编译的技术。
    
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值