extern关键字


在我们编写代码的过程中,可能会遇到重定义问题

重定义问题

首先创建一个global.h文件,在global.h文件中定义两个变量global_age和global_name

1
2
3
4
5
6
#pragma once

#include <iostream>

int global_age = 10;
std::string global_name = "qsct";

然后我们在主函数中使用这两个变量

1
2
3
4
5
6
7
8
9
#include <iostream>
#include "global.h"

int main()
{
std::cout << "global name is: " << global_name << std::endl;
std::cout << "global age is: " << global_age << std::endl;
std::cout << "Hello World!\n";
}

在与运行的过程中就会出现如下错误

重定义错误

extern关键字

在C++中,extern关键字用于声明一个变量或函数是在另一个文件或同一个文件的其他位置定义的。这主要用于处理全局变量或函数声明,确保在多个源文件中可以正确的链接到这些全局变量或函数的定义

重定义问题解决办法

在global.h修改变量global_age和global_name

1
2
3
4
5
6
#pragma once

#include <iostream>

extern int global_age;
extern std::string global_name;

然后再global.cpp里面定义变量global_age和global_name

1
2
3
4
#include "global.h"

int global_age = 10;
std::string global_name = "qsct";

再次进行编译,就可以正常的运行程序了

02_重定义错误解决