1、extern的理解和实验

用extern声明一个变量,编译器必须在其他某处找到定义才行,否则会报错,定义不能在某一函数中,即不能在某一作用域{}中

比如在头文件xxx.h中声明extern int externtest ,举两种错误情况;

第一:

在xxx.cpp中有一个函数Fun(),若只在Fun中写“externtest  = 1",则会报错“ LNK2001: 无法解析的外部符号”。因为abc还没有定义。这里要注意“定义”是需要类型说明符的,单纯一句abc = 1不是定义,是使用变量。

第二:

若在Fun()中写int externtest = 1;这时externtest只是Fun()中的局部变量,在Fun()中可以用,在全局范围内externtest仍然是没有定义的,在其他函数,比如main函数中仍然不可用,会出现同样的LNK2001错误。

所以:

必须在函数体之外,比如xxx.cpp中定义 int externtest = 1;此时externtest可供所有#include "xxx.h"的.cpp使用,即只需在一个cpp内的全局范围定义externtest,其他cpp中只需要声明extern int externtest即可。而最初定义externtest的那个cpp不需要先用extern int来声明,直接int extern 声明+定义即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值