1、extern的理解和实验

来源:互联网 发布:淘宝球鞋世家是真的吗 编辑:程序博客网 时间:2024/06/06 03:23

用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 声明+定义即可。


0 0
原创粉丝点击