Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Moduły (tak to się nazywa?)
(Jak się domyślam, działa to tak, że plik programu - program.c wykorzystuje funkcje zadeklarowane w pliku plik.h, który za pomocą #define dołączamy do programu, z kolei te funkcje z plik.h są zdefiniowane w pliku plik.c Ale jeśli się mylę to wyprowadźcie mnie z błędu.)
No i w domu zrobiłam eksperyment - wedle schematu plików podpatrzonego w materiałach wykładowych, które na marginesie, przy kompilacji zwracają ten sam błąd co moje :)
modul.cpp
#include <iostream> #include "plik.h" using namespace std; int main(int argc, char** argv) { int a=5; int b=6; cout<<licz(a,b); return 0; }
plik.h:
int licz(int a, int b);
plik.cpp
#include <stdio.h>
int licz(int a, int b){
return a+b;
}
i nie rozumiem czemu, przy próbie kompilacji programu mam taki komunikat:
/tmp/ccgtGA2R.o: In function `main':
modul.cpp:(.text+0x29): undefined reference to `licz(int, int)'
collect2: ld returned 1 exit status
Jakby nie widzi definicji tej funkcj, nie współgra z tym plikiem. Chciałabym poznać tą tajemnicę, jak dołączać pliki nagłówkowe/moduły do programów. Co robię źle? Wiem że zaśmiecam forum głupimi pytaniami, ale nieraz coś przeoczę/powielę głupi błąd, dopiero teraz trafiłam na prowadzącego który czegoś wymaga ale też daje na zajęciach coś od siebie więc to dobry moment żeby pytać. A nauczyć się tego muszę.
Offline
Was ktoś uczy tego programowania? ;] Jeśli nie może warto zajrzeć do jakiejś pomocy zamiast zgadywać. Jakaś książka, jakiś kurs w sieci, np. http://cpp0x.pl/kursy/Kurs-C++/1#/kursy/?nro=310 .
Offline
@kamikaze: racja :)
No, ale powiem:
W lib.h powinna być tak konstrukcja:
#ifndef LIB_H_INCLUDED #define LIB_H_INCLUDED #include<iostream> int licz(int a, int b); #endif
w lib.cc:
using namespace std; #include "lib.h" int licz(int a, int b){ return a+b; }
w main.cc
using namespace std; #include "lib.h" int main(int argc, char** argv) { int a=5; int b=6; cout<<licz(a,b); return 0; }
Przydałby się Makefile do tego i można hulać :) No a to nie moduły tylko biblioteki :) tak nas uczono ;D
Ostatnio edytowany przez P@blo (2011-11-06 16:48:12)
Offline
dopiero teraz trafiłam na prowadzącego który czegoś wymaga ale też daje na zajęciach coś od siebie
Jak się pewien tekst wyrwie z kontekstu to takie poczwarki wychodzą. No co głodnemu chleb na myśli
Offline
hello_world napisał(-a):
dopiero teraz trafiłam na prowadzącego który czegoś wymaga ale też daje na zajęciach coś od siebie
Jak się pewien tekst wyrwie z kontekstu to takie poczwarki wychodzą. No co głodnemu chleb na myśli
To może nie wyrywaj tekstu w kontekstu, bo ja nie mam głupich skojarzeń.
Dziękuję za pomoc.
Offline
Trin - radzę załatwić sobie IDE i na nim działać - wiem że niektórzy odradzają naukę programowania od razu z IDE, ale moje doświadczenia są takie że jak w swoje łapki dostałem QtCreatora to zacząłem bardziej koncentrować się na tym co i jak pisze, a dzięki wbudowanej obsłudze debuggera, znacznie przyjemniej rozwiązywało się problemy. Polecam konkretnie QTCreatora (to że ma "QT" w nazwie nie znaczy że nie można go używać do "czystego" C++), zalety to:
-wbudowana obsługa debugera jak i analizatora pamięci - dzięki czemu szybko widzisz gdzie masz wycieki i na czym się posypało
-auto uzupełnianie kodu
-możliwość szybkiego dodawania nowych klas, wraz z odpowiednim podziałem na pliczki .h .cpp itd
-możliwość szybkiej refaktoryzacji zmiennych czy funkcji
-automatyczna generacja makefile (przy wykorzystaniu qmake)
-bardzo wygodny dostęp do pomocy dla QT, a ostatnio i do zwykłych funkcji C/C++
-Obsługa pluginów - np. do Doxygena' co zachęca do dobrych praktyk i pisania od razu dokumentacji
i wiele innych ;]
Offline
Ja mam QT tyle że jak dla mnie to to jest jeszcze "za" - kombajn na moje marne umiejętności, bardziej skupiam się na "bajerach" niż na tym co trzeba, nie przekonuje mnie to zwłaszcza w momencie gdy trzeba oddać programy na zaliczenie. Bardziej przemawia do mnie edytor i konsola.
zresztą denerwuje mnie strasznie to tworzenie nowego projektu ilekroć chce się coś zrobić - jakbym miała przed nosem visual studio :/
Ostatnio edytowany przez Trin (2011-11-06 20:49:38)
Offline
@Trin, docenisz to w pozniejszym czasie :) ja tez jak na poczatku cos chcialem zrobic tak o zmarszu bo mnie IDE zawsze oslabialo ale teraz jak mam duzy projekt to bez IDE ani rusz :)
Offline
właśnie się przełamałam i męczę z tym moją macierz, zaraz padnę krzyżem. Komunikat widzę ale z czym to się je - za cholerę. Czuję że to będzie ostatni semestr moich studiów.
Offline
Strony: 1