Jazyk C: Přílohy


Čtení deklarací

Přibližný návod: - čte se zprava doleva <---- - neprázdné () závorky vyznačují části, které se čtou napřed a čtou se zevnitř ven - * označuje ukazatel, [] pole, () funkci - v C s nespecifikovaným počtem parametrů (...) - v C++ bez parametrů (void) (T1,T2) funkci se 2 parametry typu T1 a T2 Příklady: int typ int int * typ ukazatel na int int *p[] pole ukazatelů na int int (*u)[] ukazatel na pole int int *f() funkce vracející ukazatel na int int (*u)(int) ukazatel na funkci vracející int s parametrem typu int int (*const p[])() pole konstantních ukazatelů na funkci typu int const T konstantní T const T * ukazatel na konstantní T T * const konstantní ukazatel na T const T * const konstantní ukazatel na konstantní T Cvičení: int (* const a[])(void(*)(int)); char (*p)[10]; char **ptr; char const * const * ptr2; void (*fp)(char[], int n); typedef void (*cfp)(); void (*signal(int sig, void (*f)(int)))(int); /* viz <signal.h> */ void (*pf[5])(char *s, ...);

Program make

Wikipedia:Make

Příklad použití programu make pro malý projekt

#------------------------------------------------------------------------- # obsah souboru Makefile # je tvořen posloupností pravidel definujících závislosti mezi soubory. # Pravidla maji tvar cilový-soubor: zdrojové soubory # Po pravidle následuje popis akcí, které vytvoří cílový-soubor, # jen v případě, když cílový-soubor je starší než někteý zdrojový. # # 'make' nebo 'make all' přeloží vše (bez parametru vezme první pravidlo) # a vytvoří program # 'make archiv' zabalí vše potřebné do archívu # 'make clean' uklidí -- zruší produkty překladu, záložní kopie souborů, atd # Upozornění: na začátku řádku s popisem akce musí být tabulátor! # proměnná CC --- volba překladače - implicitně CC=cc CFLAGS = -g -O2 LDFLAGS = -g LDLIBS = -lm # pokud potřebujeme matematickou knihovnu libm all: program # překlad prvního modulu soub1.o: soub1.c soub.h $(CC) $(CFLAGS) -c soub1.c # překlad druhého modulu - implicitní akce soub2.o: soub2.c soub.h # sestavení (stejné jako pro implicitní akci) program: soub1.o soub2.o $(CC) $(LDFLAGS) -o program soub1.o soub2.o $(LDLIBS) # testování výsledku (regresní testy a podobně) test: program ./program testovací parametry ./program jiné testovací parametry ./program ještě jiné testovací parametry # úklid clean: rm -f *~ *.bak *.o program # vytvoření archívu archiv: tar czvf projekt2.tar.gz *.c *.h Makefile #-------------------------------------------------------------------------

Poznámka: Program make dovoluje různé optimalizace zápisu, například implicitní volání překladače podle šablony, když pravidlo nemá definovánu žádnou akci. Je možné použít proměnné podobně jako v shellu. Další podrobnosti viz 'man make' a další dokumentace.

Poznámka: GCC umí generovat pravidla pro make automaticky:

dep: $(CC) -MM *.c >dep.list -include dep.list


fopen()

Možné režimy otevření souboru a požadavky na soubor

r w a r+ w+ a+ ---------------------------------------------------------- Soubor musí existovat x - - x - - Starý obsah souboru je smazán - x - - x - Soubor je možné číst x - - x x x Do souboru je možné zapisovat - x x x x x Do souboru se zapisuje na konec - - x - - x může být doplněn binární režim = písmeno b pro w, w+ může být doplněno x = selže pro existující soubor režim + vyžaduje fseek/rewind/... mezi čtením a zápisem
Poslední modifikace: 1. March 2018
Připomínky k obsahu stránky posílejte na e-mail: peringer AT fit.vutbr.cz