Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dzielenie kodu na kilka plików źródłowych

Ostatnio zmodyfikowano 2015-12-30 18:40
Autor Wiadomość
Braile
Temat założony przez niniejszego użytkownika
Dzielenie kodu na kilka plików źródłowych
» 2015-12-29 22:27:33
Witam,
Mam problem z podzieleniem kodu na kilka plików źródłowych. Napisałem swój własny, prosty program oparty na klasach, których deklaracje umieściłem w pliku nagłówkowym, a definicje funkcji składowych klasy w pliku o takiej samej nazwie co nagłówek, tylko z rozszerzeniem .cpp
Przy uruchamianiu programu głównego, nagłówek jest poprawnie dołączany, natomiast nie mam pojęcia jak podpiąć na etapie linkowania plik z definicjami funkcji przez co ukazuje mi się komunikat z błędem w czasie kompilacji "undefined reference to 'person::output()'"

Początkowo myślałem, że problem znajduje się w moim programie jednak po przekopiowaniu przykładowego programu z tego rozdziału kursu wyskakuje mi dokładnie ten sam komunikat "undefined reference to `dodajLiczby(int, int)'


P-142567
megatron
» 2015-12-30 00:06:48
Daj kod programu, nikt nie jest jasnowidzem :D

@edit:
ale najprawdopodobniej inicjujesz funkcję której nie zdefiniowałeś ;)
P-142570
Lucas535
» 2015-12-30 08:02:39
Zrobiłeś w ogóle projekt? Czy tylko masz te 2 pliki na pasku; musisz je dodać do jednego projektu.
P-142576
Braile
Temat założony przez niniejszego użytkownika
» 2015-12-30 11:48:05
@Lucas535 dokładnie o to słowo kluczowe mi chodziło, "projekt". Teraz wszytko działa tak jak należy.

Mam jeszcze jedno pytanie. Jak rozumieć to stwierdzenie z kursu "Nazwy zmiennych, które definiujesz za pomocą preprocesora muszą być unikatowe podczas kompilacji projektu dla każdego używanego pliku, tak więc w każdym pliku musi się znajdować inna nazwa zmiennej preprocesora."
http://cpp0x.pl/kursy/Kurs-C++/Dzielenie-kodu-na-kilka-plikow-zrodlowych/310

Odnosi się to do tej instrukcji preprocesora, a dokładniej nazwaPliku ?
C/C++
#ifndef nazwaPliku_hpp
#define nazwaPliku_hpp
/*
  tutaj piszesz cały interfejs
*/
#endif
 
Jeśli dobrze zrozumiałem to nazwaPliku może być dowolna z tym, że tworząc kolejną instrukcję preprocesora musi być ona inna ?
P-142577
Lucas535
» 2015-12-30 13:27:30
W każdym pliku nagłówkowym, który dołączasz do programu musi być inna nazwa zmiennej preprocesora, czyli to co jest po #define. Jak będą np. w dwóch plikach nagłówkowych takie same nazwy blabla, to przy drugim w kolejności pliku kompilator natknie się na #ifndef blabla gdzie wie, że blabla zostało już wcześniej dołączone i nie skopiuje ci tego co tam jest, nawet jak to co innego niż napisałeś w tym pierwszym pliku.
P-142582
Braile
Temat założony przez niniejszego użytkownika
» 2015-12-30 18:40:08
Dziękuję za udzieloną pomoc.
P-142601
« 1 »
  Strona 1 z 1