Przestrzenie nazw w plikach *h

0

Pisze sobie mały programik.
W jednym z plików *.h definiuje sobie przestrzeń nazw.

#ifndef mojaprzestrzen_h
#define mojaprzestrzen_h

namespace mojaprzestrzen
{
    bool jakas_zmienna;
}

#endif

Wszystko było by ok, gdyby nie jedna rzecz.

Mam kilka plików *cpp. W kilku korzystam z tej samej przestrzeni nazw.

Includuje sobie ładnie pliczek mojaprzestrzen.h w każdym tym pliku *cpp.

#include "mojaprzestrzen.h"

Każdy plik cpp ma swój plik .h z deklaracjami funkcji w nim zawartych.
W głównym pliku programu cpp (główny, rozumiem ten z funkcją int main) korzystam także z tej przestrzeni nazw, którą ładuje poprze zaincludowanie pliku mojaprzestrzen.h.
Z funkcji zawartych w innych plikach
.cpp także korzystam w pliku głównym, includując pliki *.h każdego pliku.

I teraz gdy includuje plik mojaprzestrzen.h w innych plikach .cpp, oraz w pliku głównym cpp oraz pliki .h innych plików *.cpp dostaje błąd podczas lnkowania:


error LNK2005: "mojaprzestrzen::zmienna" ([email protected]@@3_NA) already defined in jakisplikpoboczny.obj
fatal error LNK1169: one or more multiply defined symbols found
0

Zmienne muszą być extern a ich definicje znajdować się w osobnym pliku .cpp

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