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:56 (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 (es. tokenizer_rlib) 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 le) funzioni, 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 1 creando invece che una libreria statica una libreria dinamica ('libtokenizer.so'). Rifare l'esercizio 1 creando invece che una libreria statica una libreria dinamica ('libtokenizer.so').
-Verificarne il corretto caricamento in memoria della libreria spostando il file 'libtokenizer.so' in una differente directory (es. ~/mylibdir).+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.1583142997.txt.gz · Ultima modifica: 02/03/2020 alle 09:56 (5 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki