如何在多个.cpp文件中使用全局变量
How to use global variables in multiple .cpp files?
我有一个简单的程序,它试图在一个单独的文件中打印我的全局变量。我使用的是Visual Studio 2013专业版IDE。
打印.h
#ifndef PRINT_H_
#define PRINT_H_
void Print();
#endif
print.cpp
#include "print.h"
#include <iostream>
void Print()
{
std::cout << g_x << 'n';
}
源.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(), 'n');
std::cin.get();
return 0;
}
我得到一个编译器错误error C2065: 'g_x' : undeclared identifier
。
我已经搜索了这个论坛,但找不到其他人有我的问题。我尝试在单独的.cpp文件中重新声明我的全局变量,但没有成功。正如您所看到的,我已经包含了必要的头保护,并为我的全局变量分配了extern关键字。这是我第一次在多个文件中测试全局变量。很明显,我错过了一些简单的东西。我需要更改或添加什么才能使程序正常工作?
编辑:我发现这个主题有助于理解外部变量和全局变量定义之间的区别。
编译器正在编译print.cpp
。它在编译print.cpp
时对source.cpp
一无所知。因此,当编译print.cpp
时,您在source.cpp
中放置的g_x
对您没有任何好处,这就是为什么会出现错误的原因。
你可能想做的是
1( 将CCD_ 8放置在CCD_。然后编译器在编译print.cpp
时会看到g_x
。
2( 在source.cpp
中,从g_x
:的声明中删除extern
int g_x = 5;
将全局声明移动到公共标头,如common.h:
#ifndef COMMON_H_
#define COMMON_H_
extern int g_x; //tells the compiler that g_x exists somewhere
#endif
print.cpp:
#include <iostream>
#include "print.h"
#include "common.h"
void Print()
{
std::cout << g_x << 'n';
}
源.cpp:
#include <iostream>
#include <limits>
#include "print.h"
#include "common.h"
int g_x;
int main()
{
g_x = 5; //initialize global var
Print();
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
std::cin.get();
return 0;
}
在其他.cpp文件中,您可以访问g_x
,包括common.h标头。
extern int g_x;
属于.h,并且您需要添加
int g_x =5;
到一些.cpp.
相关文章:
- 在 elf 文件中查找全局变量的位置
- 访问另一个.cpp文件中的.cpp文件中定义的全局变量
- 在主循环外部多个文件上定义全局变量
- 查找声明全局变量的文件
- 通过其他文件中的另一个全局变量使用类的全局实例
- 如何管理多个文件、全局变量和定义
- C 使用c库,其中包含标题文件中定义的全局变量
- 如何在可执行文件中从.so访问全局变量
- cpp 文件中的全局变量
- 在blackberry cascades 10中访问多个qml文件中的全局变量
- 将所有常用的全局变量移到一个头文件中,以减少#includes的数量,这是一种好的做法吗
- 如何使用在源文件内的头文件中声明的全局变量
- 生成文件:在全局变量初始化之前通过"make all"命令运行 bash 脚本
- 跨多个文件的c++全局变量
- 包含文件会导致全局变量出现多个定义错误
- 如何创建一个具有全局变量的 lib 文件,这些全局变量应该将其信息共享给另一个项目
- 跨多个.cpp文件共享全局变量(visual studio 2015)
- 在头文件中包含全局变量
- 如何声明和定义全局变量,以便从所有头文件/源文件中正确访问它们
- 头文件中的全局变量导致c++重定义错误