Может понравиться кто-нибудь объяснить мне, как связать функции @ functions.cpp в main.cppнеразрешенный внешний символ «INT randomNumber»
Примечание: Я хочу, чтобы оба файла functions.cpp и main.cpp использовать одни и те же переменные от header.h
Спасибо!
main.cpp
#include "Header.h"
#include <iostream>
using namespace std;
int multi();
int printOutRanomdNumber();
int main()
{
cout << "Eneter a number you want to multiply" << endl;
cout << multi() <<endl;
cout << printOutRanomdNumber();
system("pause");
return 0;
}
header.h
#ifndef _HEADER_
#define _HEADER_
#include <iostream>
using namespace std;
extern int randomNumber;
int multi();
int printOutRanomdNumber();
#endif
functions.cpp
#include "Header.h"
#include <iostream>
using namespace std;
int multi()
{
int x;
cin >> x;
return(x=x*x);
}
int printOutRanomdNumber()
{
cout << "Please enter a random number" << endl;
cin >> randomNumber;
return (randomNumber);
}
Цель 'extern' - разрешить совместное использование одного объекта между несколькими TU. То, что вы предлагаете, вредно для этой цели. Как другие ТУ знают об «extern», если декларация удалена из заголовка? Можно утверждать, что объект нужен только в 'functions.cpp', но в этом случае зачем его начинать с' extern'? Вы предлагаете решить проблему компиляции и связывания в этом случае, но это не тот способ решить эти проблемы. –
Спасибо, что это решило проблему! есть ли способ определить переменную в файле .h и использовать ее в двух из .cpps? – alentor
На самом деле да, я не знал, что вы можете определить ключевое слово extern, а также иметь определение переменной в той же области. Итак, да, вы можете оставить определение в заголовке, позвольте мне обновить ответ. – Tuxdude