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