[C++] Program w 2-óch plikach

0

Jestem na etapie nauki C++, doszedłem do rozdziału o programach, które mogą składać się z kilku plików z kodem i pliku nagłowkowego.

Napisałem sobie wymyślony przeze mnie prosty programik, by wypróbować jak to wszystko działa, ale przy kompilacji pojawiają się błędy.

Oto ten program w poszczególnych plikach:
[b]naglowek.h[/b]
[code]extern int liczba;

void wyp();[/code]

[b]prog.cpp[/b]
[code]#include <iostream>
using namespace std;

#include "naglowek.h"
int liczba = 22;
main() {
wyp();
system("pause");
}[/code]

[b]prog2.cpp[/b]
[code]#include <iostream>
using namespace std;

#include "naglowek.h"

void wyp() {

cout << liczba << endl;

}[/code]
Ogólnie rzecz biorąc chciałbym, żeby funkcja znajdująca się w pliku prog2.cpp wypisała mi wartość zmiennej globalnej liczba z pliku prog.cpp
Przy kompilacji pliku prog2.cpp wywala mi błąd:
[quote][Linker error] undefined reference to 'liczba'
[Linker error] undefined reference to 'WinMain@16'
Id returned 1 exit status
[/quote]
Niby niezdefiniowana jest referencja... z tego co pamiętam referencja służyła do zwracania wartości w funkcji o jakiś argumentach nic nie zwracających..., ale co to ma do tego? Może mi ktoś pomóc jak rozwiązać ten problem?

0

"extern int liczba;" daj w pliku prog2.cpp nie w #include "naglowek.h"

Problem w prog:
tam masz #include "naglowek.h" (co zawiera "extern int liczba;")
oraz int liczba = 22;
Czyli masz 2 razy zadeklarowaną zmienną liczba(raz jako extern, raz nie)


No i oczywiście możesz kompilować oddzielnie, ale linkować musisz już razem(właśnie masz błąd linkera, czyli pewnie próbujesz linkować oddzielnie).


Ta referencja nic nie wspólnego z referencją z C++. Po prostu nie ma zadeklarowanej zmiennej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1