У меня есть эта простая программа, которая пытается напечатать мою глобальную переменную в отдельном файле. Я использую Visual Studio 2013 профессиональный IDE.Как использовать глобальные переменные в нескольких файлах .cpp?
print.h
#ifndef PRINT_H_
#define PRINT_H_
void Print();
#endif
print.cpp
#include "print.h"
#include <iostream>
void Print()
{
std::cout << g_x << '\n';
}
source.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. Это моя первая проверка глобальных переменных в нескольких файлах. Очевидно, я пропустил что-то простое. Что мне нужно изменить или добавить, чтобы моя программа работала?
EDIT: Я нашел это topic полезным при понимании разницы между внешним и глобальным значением.
Вы могли бы хотеть смотреть на [это] (http://stackoverflow.com/questions/10422034/when-to- use-extern-in-c) – jaggedSpire
@jaggedSpire Я прочитал вашу ссылку, но я все еще не уверен, что мне нужно изменить в своей программе. У меня есть «extern», и когда я переопределяю свою глобальную переменную в 'print.cpp', она все равно не будет компилироваться. – Bryan
Вы не должны определять переменную в файле заголовка, просто объявляя ее определяемой в другом месте, а затем включающую объявление в соответствующие .cpp-файлы. – jaggedSpire