pliki nagłówkowe i błąd 'multiple definition'

0

W pliku nagłówkowym "lista.h" umieściłem deklaracje funkcji, struktur oraz zmiennej "first", natomiast kody w pliku "lista.cpp". Do "main.cpp" dopisałem linie:

#include "lista.h"

Podczas kompilacji wyskakuje błąd "multiple definition of 'korzen'". Skąd bierze się ten błąd?

0

Wróżka na urlopie, przepraszam, ale wróci dopiero 22.12.2012

0

oraz zmiennej "first"

A kysz, zgiń, przepadnij!
Żadnych zmiennych w plikach nagłówkowych! A błąd stąd że nie masz w tym nagłówku strażnika nagłówka zapewne.

0

Wydaje mi się, że jest to problem bardziej teoretyczny dlatego nie podałem kodu. Błąd występuje chociażby dla takiego uproszczonego programu:
plik main.c

 
#include <iostream>
#include "lista.h"

int main()
{

    return 0;
}

plik lista.h:

 
#ifndef LISTA_H_INCLUDED
#define LISTA_H_INCLUDED


struct lista
{
    int key;
    struct lista *next;
};
lista *first;
#endif

Żadnych zmiennych w plikach nagłówkowych! A błąd stąd że nie masz w tym nagłówku strażnika nagłówka zapewne.

Hmm... a jeśli chciałbym mieć zmienną globalną, do której bym miał dostęp w kilku plikach? jak to wykombinować?
przez strażnika miałeś na myśli sprawdzenie czy nagłówek został już raz dołączony do pliku?

0

jeśli chciałbym mieć zmienną globalną,

To znaczy że źle coś zaprojektowałeś i musisz się jeszcze sporo nauczyć zanim zaczniesz pisać programu.
A w podanym kodzie nie widzę nic o nazwie "korzeń" więc nijak nie mogę się odnieść do wyjściowego problemu.

0

sorka trochę się zagalopowałem. Po prostu przerobiłem program i podałem w drugim poście. Oczywiście błąd wciąż występuje, z tym że dla zmiennej "first".

0

Sam więc widzisz ze zmienne globalne są złe. Tym bardziej skoro nie umiesz ich używać. Nie używaj więc i problem sam sie rozwiąże.

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