Многофайловая программа
Делал простенькую игру в консоли одним файлом, сейчас же хочу разбить её на модули в разных cpp файлах. Проблема в том, что мне нужно из разных cpp файлов работать с четко определенными функциями в главном cpp файле. Уже пробовал что-то написать, но вылезает всегда проблема двойного определения. Как быть? Буду рад любым рекомендациям.
Файл Header.h:
#ifndef HEADER_
#define HEADER_
#include <iostream>
using namespace std;
int x_pos;
int getX();
int func();
#endif
TEST.cpp:
#include "Header.h"
int main()
{
x_pos = 12;
cout << getX();
cout << func();
}
int getX() {
return 111;
}
Sourse.cpp:
#include "Header.h"
int func() {
return getX();
}
Ответы (1 шт):
Замените
int x_pos;
на
extern int x_pos;
и добавьте
int x_pos;
в один из .cpp-файлов.
Или напишите вместо
int x_pos;
это:
inline int x_pos;
Дело в том, что просто
int x_pos;
это не просто объявление, но и определение глобальной переменной x_pos, в результате чего она оказывается определена в двух .cpp-файлах.
Если в программе, как и в примере, переменная используется только в одном .cpp-файле, то там ее и определите, не вставляя в .h-файл...
