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

2011-04-16 21:02
Kamarkos
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?

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-04-16 21:23
0

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

Pozostało 580 znaków

2011-04-16 21:37
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2011-04-16 22:28
Kamarkos
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?

main.c i iostream? To piszesz w C czy w C++? - Xupicor 2011-04-16 23:38

Pozostało 580 znaków

2011-04-16 22:35
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2011-04-16 22:56
Kamarkos
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".

Pozostało 580 znaków

2011-04-16 23:01
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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