跨多个文件的全局变量

问题描述 投票:0回答:1

我需要在项目的多个文件中使用全局变量,如下所示:

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’的未定义引用”...

c++ variables compilation global
1个回答
0
投票

更新:我可以通过使用 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;
}

必须在将与头文件一起编译的源文件之一中定义全局变量。 (只要一个,其他的都会认得。)

© www.soinside.com 2019 - 2024. All rights reserved.