2. Richiami di Linguaggio ANSI C, Macro, Moduli, Makefile.
Preprocessore, compilatore, assemblatore e linker, define e macro,
programmi costituiti da più moduli, dichiarazioni extern e static,
Makefile, librerie statiche e condivise,
Compilazione e Moduli
ANSI_C_RiassuntoCompilazioneModuliVariabili.pdf C
(Appunti delle lezioni)
Opzioni del gcc e uso del Makefile
2c_gcc_Makefile.pdf (Appunti delle lezioni)
simplemake.tgz (esempi)
Cenni su Librerie Statiche e Caricate Dinamicamente
2b_Librerie_Statiche_Condivise.pdf (Appunti delle lezioni)
Costruire librerie caricabili dinamicamente: esempio
2e_Esempio_Librerie_Condivise.pdf,
Makefile,
progr1.c,
funzioni1.c,
funzioni1.h,
funzioni2.c,
funzioni2.h
Comandi per visualizzazione librerie presenti in memoria:
VISUALIZZA_LIBRERIE_IN_MEMORIA.sh
Esercitazioni in laboratorio - prof. Giovanni Pau (lezioni 6,7)
2d_laboratorio_C_Makefile_utils.pdf
--- Esempi utili ---
* Esempio con piu' moduli - Oracolo:
Makefile,
oracolo.c,
interroga.c,
interroga.h
* Errore Bastardo #1 - Perché mettere SEMPRE i prototipi di funzioni e anche l'opzione -Wall :
Makefile,
main.c,
funzioni.c
Errore Bastardo #2 - Non modificare Stringhe Costanti perché stanno in segmenti read only :
stringhe_costanti.c,
stringhe_costanti.s(vedere sezione rodata),
Makefile,
Esempio programma con più moduli e più variabili Globali: come proteggere le variabili globali
main.c
funzioni.c
funzioni2.c
Makefile
Esempi compilazione condizionale :
ifdef.c
ifdef_con_espressioni_intere.c
ifndef.c
Esempio Macro #1 - Macro con corpo in più righe :
macro_in_piu_righe.c
(diventa macro_in_piu_righe.E)
Esempio Macro con Argomenti #2 - Perché incapsulare il corpo della macro in un do while(0) :
Chiamata semplice di Macro macro_chiamata_isolata.c
(diventa macro_chiamata_isolata.E)
Problema: Chiamata di Macro in un if macro_chiamata_in_if.c
(diventa macro_chiamata_in_if.E)
OK: Chiamata di Macro in un if macroOK_chiamata_in_if.c
(diventa macroOK_chiamata_in_if.E)
* Esempio Macro con Argomenti #3 - Perché incapsulare gli argomenti tra parentesi tonde :
Implementazione di macro con e senza parentesi attorno agli argomenti macro_arg_parentesi.c
Esempio Include Annidati e Inclusi più volte : Perché racchiudere il contenuto degli header file dentro una direttiva #ifndef
INCLUDE_ANNIDATI/
(directory da listare)
Uso del Makefile
Esempio in quale shell il make esegue la lista di comandi? sh non bash
Makefile_check_shellechoesprcond
Esempio in quale directory il make lancia ciascuna riga di comandi della lista? current, per ogni riga di comandi
Makefile_checkdir
Esempio Non conta l'ordine di definizione della variabili del Make
Makefile_ordinedefinizionivariabilidelmake