如何在多个.cpp文件中使用全局变量?

How to use global variables in multiple .cpp files?(如何在多个.cpp文件中使用全局变量?)
本文介绍了如何在多个.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文件中使用全局变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

windeployqt doesn#39;t deploy qwindowsd.dll for a debug application(windeployqt不会为调试应用程序部署qwindowsd.dll)
QLineEdit: Show a processed text, not the entered one, but keep it (custom echo mode)(QLineEdit:显示已处理的文本,而不是输入的文本,但保留它(自定义回显模式))
Showing tooltip in a Qt chart with multiple y axes(在带有多个y轴的Qt图表中显示工具提示)
QTableView, how to change dragging multiple items display(QTableView,如何更改拖动多项显示)
How can I build Qt 5.13.2 with GCC 11.1 on Windows?(如何在Windows上用GCC 11.1构建Qt 5.13.2?)
singleton template as base class in C++(C++中作为基类的Singleton模板)