Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio20:esercitazionib:esercitazione3

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:sol:laboratorio20:esercitazionib:esercitazione3 [02/03/2020 alle 09:04 (5 anni fa)] – [Esercizio 1: libtokenizer.a] Massimo Torquatiinformatica:sol:laboratorio20:esercitazionib:esercitazione3 [03/03/2020 alle 07:44 (5 anni fa)] (versione attuale) – [Esercizio 2: libtokenizer.so] Massimo Torquati
Linea 3: Linea 3:
 ===== Esercizio 1: libtokenizer.a ===== ===== Esercizio 1: libtokenizer.a =====
  
-Inserire in un file 'tokenizer.h' la dichiarazione di due funzioni 'tokenizer' e 'tokenizer_r' (vedere la soluzione proposta nell'Esercitazione 2). 'tokenizer' ha la stessa interfaccia di 'tokenizer_r' ma mentre la prima usa al suo interno 'strtok', la seconda usa 'strtok_r'. Inserire nel file 'tokenizer.c' l'implementazione delle due funzioni (cioè la loro definizione). Creare quindi una librerie statica 'libtokenizer.a' che offre l'implementazione delle due funzioni. Scrivere un programma main che utilizza una delle due o entrambe le funzioni, il programma includerà il file 'tokenizer.h' e verrà linkato alla libreria statica 'libtokenizer.a'.+Inserire in un file 'tokenizer.h' la dichiarazione di due funzioni 'tokenizer' e 'tokenizer_r' (vedere la soluzione proposta nell'Esercitazione 2). 'tokenizer' ha la stessa interfaccia di 'tokenizer_r' ma mentre la prima usa al suo interno 'strtok', la seconda usa 'strtok_r'. Inserire nel file 'tokenizer_lib.c' l'implementazione delle due funzioni (cioè la loro definizione). Creare quindi una librerie statica 'libtokenizer.a' che offre l'implementazione delle due funzioni. Scrivere un programma main (es. tokenizer_main.c) che utilizza una delle due (o entrambe lefunzioni, il programma includerà il file 'tokenizer.h' e verrà linkato alla libreria statica 'libtokenizer.a'.
  
 ===== Esercizio 2: libtokenizer.so ===== ===== Esercizio 2: libtokenizer.so =====
  
-Rifare l'esercizio creando invece che una libreria statica una libreria dinamica ('libtokenizer.so'). +Rifare l'esercizio creando invece che una libreria statica una libreria dinamica ('libtokenizer.so'). 
-Verificarne il corretto caricamento in memoria spostando il file 'libtokenizer.so' nella directory /tmp.+Verificarne il corretto caricamento in memoria della libreria spostando il file 'libtokenizer.so' in una directory differente da quella corrente (es. ~/mylibdir). Provare ad usare sia l'opzione del linker ''-Wl, rpath,'' che la variabile d'ambiente per il loader ''LD_LIBRARY_PATH''.
  
 ===== Esercizio 3: macro ===== ===== Esercizio 3: macro =====
Linea 45: Linea 45:
 </code> </code>
  
-La funzione 'somma' aggiunge l'intero x letto dallo standard input al valore calcolato fino a quel momento, quindi ritorna la somma parziale. Il numero di valori da leggere dallo standard input viene passato come argomento del main. +La funzione 'somma' aggiunge l'intero x letto dallo standard input (con ''scanf'' o ''fscanf''al valore calcolato fino a quel momento, quindi ritorna la somma parziale. Il numero di valori da leggere dallo standard input viene passato come argomento del main. 
-Il valore iniziale della somma deve essere 'INIT_VALUE' che viene definito a compilazione utilizzando il flag del compilatore ''-D'' (es. -DINIT_VALUE=100). Il programma non deve fare uso di variabili globali.+Il valore iniziale della somma deve essere 'INIT_VALUE' che viene definito a compilazione utilizzando il flag del preprocessore ''-D'' (es. -DINIT_VALUE=100). Il programma non deve fare uso di variabili globali.
  
 Valutare se la funzione somma così come definita è rientrante ed eventualmente fornire una versione rientrante 'somma_r'. Valutare se la funzione somma così come definita è rientrante ed eventualmente fornire una versione rientrante 'somma_r'.
informatica/sol/laboratorio20/esercitazionib/esercitazione3.1583139851.txt.gz · Ultima modifica: 02/03/2020 alle 09:04 (5 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki