Kurs programowania w C cz. 135

Nasza ocena:

5
Wyświetleń: 539
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C  cz. 135 - strona 1

Fragment notatki:

152 ROZDZIAŁ 20. BIBLIOTEKI #ifndef WIKI_H #define WIKI_H void wiki (void); #endif Należy pamiętać, o podaniu void w liście argumentów funkcji nie przyjmujących argumen- tów. O ile przy definicji funkcji nie trzeba tego robić (jak to często czyniliśmy w przypadku funkcji main) o tyle w prototypie brak słówka void oznacza, że w prototypie nie ma informacji na temat tego jakie argumenty funkcja przyjmuje. Plik nagłówkowy zapisujemy jako “wiki.h”. Teraz napiszmy ciało tej funkcji: #include "wiki.h" #include  void wiki (void) { printf ("pl.Wikibooks\n"); } Ważne jest dołączenie na początku pliku nagłówkowego. Dlaczego? Plik nagłówkowy za- wiera deklaracje naszych funkcji — jeśli popełniliśmy błąd i deklaracja nie zgadza się z defi- nicją, kompilator od razu nas o tym powiadomi. Oprócz tego plik nagłówkowy może zawierać definicje istotnych typów lub makr. Zapiszmy naszą bibliotekę jako plik “wiki.c”. Teraz należy ją skompilować. Robi się to trochę inaczej, niż normalny program. Należy po prostu do opcji kompilatora gcc dodać opcję “-c”: gcc wiki.c -c -o wiki.o Rozszerzenie “.o” jest domyślnym rozszerzeniem dla bibliotek statycznych (typowych bi- bliotek łączonych z resztą programu na etapie kompilacji). Teraz możemy spokojnie skorzystać z naszej nowej biblioteki. Napiszmy nasz program: #include "wiki.h" int main () { wiki(); return 0; } Zapiszmy program jako “main.c” Teraz musimy odpowiednio skompilować nasz program: gcc main.c wiki.o -o main Uruchamiamy nasz program: ./main pl.Wikibooks Jak widać nasza pierwsza biblioteka działa. Zauważmy, że kompilatorowi podajemy i pliki z kodem źródłowym (main.c) i pliki ze skompilowanymi bibliotekami (wiki.o) by uzyskać plik wykonywalny (main). Jeśli nie podali- byśmy plików z bibliotekami, main.c co prawda skompilowałby się, ale błąd zostałby zgłoszony przez linker — część kompilatora odpowiedzialna za wstawienie w miejsce wywołań funkcji ich adresów (takiego adresu linker nie mógłby znaleźć). ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz