Start | Zajęcia 1 | Zajęcia 2 | Zajęcia 3 | Zajęcia 4 | Zajęcia 5 | Zajęcia 6 | Zajęcia 7 | Zajęcia 8 | Zajęcia 9 | Zajęcia 10 | Pliki z zajęć |
---|
Przykład podziału programu na pliki nagłówkowe i źródłowe:
silnia.c
#include <stdio.h> #include "fmat.h" int main() { int liczba,s; printf("Podaj liczbe: "); scanf("%d",&liczba); s = silnia(liczba); printf("Silnia z %d wynosi %d\n",liczba,s); return 0; }
fmat.h
#ifndef FMAT_H #define FMAT_H int silnia(int n); float potega(float podstawa,int wykladnik); #endif
fmat.c
#include "fmat.h" int silnia(int n) { int i=2, s=1; while( i < n+1 ) { s = s * i; i = i + 1; } return s; }
Uwaga: kompilacja przeprowadzana jest tylko na plikach źródłowych (*.c
), więc kompilacja powyższego programu w Linuksie wygląda tak:
cc fmat.c silnia.c -o silnia
Ćwiczenia
tab.c
(tu umieść definicje funkcji), prog.c
(tu umieść funkcję main()
) i tab.h
(plik nagłówkowy z deklaracjami funkcji zdefiniowanych w pliku tab.c
)define
zdefiniuj stałą określającą wielkość tablicyodwroc
, która odwróci kolejność elementów w tablicy liczb rzeczywistych, umieść deklarację funkcji w odpowiednim pliku nagłówkowym a definicję w pliku źródłowymmaxind
, która dla danej tablicy liczb rzeczywistych zwraca indeks (pozycję w tablicy) elementu o największej wartościmaxind
)
Kompilator cc
(gcc
)
cc [-Ikatalog] [-Lkatalog] [-o nazwa] źródło.c ... [-lbiblioteka ...]
-I katalog z plikami nagłówkowymi
-L katalog z bibliotekami
-l nazwa biblioteki, np -lm to biblioteka matematyczna
W Linuksie pliki nagłówkowe znajdują sie w katalogu /usr/include/
, biblioteki w katalogach /lib/
, /usr/lib
.
Preprocesor
cc -E prog.c | less
Kompilacja (powstają pliki obiektowe *.o, kompilator Borland *.obj)
cc -c prog.c tab.c
Linkowanie
ld -lc tab.o prog.o -o prog // nie działa, dlaczego? cc tab.o prog.o -o prog
Uruchomienie
./prog
Dodatkowe narzędzia:
ldd prog
nm tab.o
dekompilacja programu
objdump -D tab.o
lista symboli z pliku obiektowego (podobnie do nm
)
objdump -t tab.o
elf
readelf -a tab.o
PATH
)
Składnia podobna do gcc
jednak istotna jest kolejność opcji
bcc32 [-Ikatalog] [-Lkatalog] [-enazwa.exe] źródło.c ... [biblioteka.lib ...]
Przykład
bcc32 -eprogram.exe tab.c prog.c
lc
(np.: „C:\Program Files\Microsoft Visual Studio 8\VC\bin\lc.exe” )Składnia
cl [/Fe"nazwa_pliku.exe"] źródło.c ... [/link biblioteki]
Borland C++ Builder:
File→New→Other→Console Wizard Visual Studio C++:
File→New→Project→Win32→Win32 Console ApplicationBorland C++ Builder:
Project→Add To Project Visual Studio C++:
Project→Add Existing Item Borland C++ Builder:
Project→Make Project (Ctrl+F9) Visual Studio C++:
Build→Build Solution (F6)Borland C++ Builder:
Run→Run (F9) Visual Studio C++:
Debug→Start Debugging (F5)Uwaga: konsola w której wyświetlane są wyniki działania programu zamknie się automatycznie po wykonaniu programu
Ćwiczenia
maxind
(z ćwiczeń powyżej) posortuje tablicę liczb rzeczywistych