我需要在项目的多个文件中使用全局变量,如下所示:
var.h
#include <iostream>
int globalVar;
void checkVar();
void setVar(int newValue);
var.cpp
#include "var.h"
void checkVar(){
std::cout << globalVar << std::endl;
}
void setVar(int newValue){
globalVar = newValue;
}
main.cpp
#include "var.h"
int main(){
checkVar();
setVar(5);
std::cout << globalVar << std::endl;
}
问题是编译器抱怨“变量'globalVar'的多重定义”,我该怎么办? 我已经尝试过使用 extern 但随后它抱怨“对‘globalVar’的未定义引用”...
更新:我可以通过使用 extern 关键字使其工作!
var.h
extern int globalVar;
int checkVar();
void setVar(int newValue);
var.cpp
#include "var.h"
int globalVar;
void checkVar(){
std::cout << globalVar << std::endl;
}
void setVar(int newValue){
globalVar = newValue;
}
main.cpp
#include "var.h"
int main(){
checkVar();
setVar(5);
std::cout << globalVar << std::endl;
}
必须在将与头文件一起编译的源文件之一中定义全局变量。 (只要一个,其他的都会认得。)