How to use global variables in multiple .cpp files?(如何在多个.cpp文件中使用全局变量?)
问题描述
我有一个简单的程序,它试图在一个单独的文件中打印我的全局变量。我正在使用Visual Studio 2013专业版IDE。
print.h
#ifndef PRINT_H_
#define PRINT_H_
void Print();
#endif
print.cpp
#include "print.h"
#include <iostream>
void Print()
{
std::cout << g_x << '
';
}
Soure.cpp
#include <iostream>
#include <limits>
#include "print.h"
extern int g_x = 5;
int main()
{
Print();
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '
');
std::cin.get();
return 0;
}
我收到编译器错误error C2065: 'g_x' : undeclared identifier
。
我在这个论坛里搜索了一下,找不到其他有我问题的人。我尝试在单独的.cpp文件中重新声明我的全局变量,但没有成功。如您所见,我已经包含了必要的头部保护,并为我的全局变量分配了关键字extern。这是我第一次在多个文件中测试全局变量。显然我错过了一些简单的东西。我需要更改或添加哪些内容才能使我的程序正常工作?
编辑:我发现这topic有助于理解外部变量和全局变量定义之间的区别。
推荐答案
编译器正在编译print.cpp
。它在编译print.cpp
时对source.cpp
一无所知。因此,您放在source.cpp
中的g_x
在编译print.cpp
时绝对没有用,这就是您收到错误的原因。
您可能要做的是
1)将extern int g_x;
放在print.h
内。那么编译器在编译print.cpp
时会看到g_x
。
2)在source.cpp
中,从g_x
的声明中删除extern
:
int g_x = 5;
这篇关于如何在多个.cpp文件中使用全局变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在多个.cpp文件中使用全局变量?
基础教程推荐
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 设计字符串本地化的最佳方法 2022-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01