Dzielenie kodu na kilka plików źródłowych
Ostatnio zmodyfikowano 2015-12-30 18:40
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)'
|
|
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ś ;) |
|
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. |
|
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 ? #ifndef nazwaPliku_hpp #define nazwaPliku_hpp
#endif
Jeśli dobrze zrozumiałem to nazwaPliku może być dowolna z tym, że tworząc kolejną instrukcję preprocesora musi być ona inna ? |
|
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. |
|
Braile Temat założony przez niniejszego użytkownika |
» 2015-12-30 18:40:08 Dziękuję za udzieloną pomoc. |
|
« 1 » |