18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

#cc -Wall -o cmd-line cmd-line.c<br />

si provi a verificare l’output ottenuto invocando il programma appena generato. Per esempio, si<br />

otterrà:<br />

#./cmd-line<br />

Argomento 0 (1): ./cmd-line<br />

#./cmd-line arg1 arg2 arg3<br />

Argomento 0 (4): ./cmd-line<br />

Argomento 1 (4): arg1<br />

Argomento 2 (4): arg2<br />

Argomento 3 (4): arg3<br />

#./cmd-line arg1 arg2 arg3<br />

Argomento 0 (4): ./cmd-line<br />

Argomento 1 (4): arg1<br />

Argomento 2 (4): arg2<br />

Argomento 3 (4): arg3<br />

#./cmd-line "arg1 arg2 arg3"<br />

Argomento 0 (2): ./cmd-line<br />

Argomento 1 (2): arg1 arg2 arg3<br />

In particolare, si noti l’effetto (nullo) di spazi extra inseriti tra gli argomenti nel terzo esempio.<br />

Mentre l’effetto degli apici nel quarto esempio fa si che il programma ottenga un unico parametro<br />

inclusivo degli spazi.<br />

9.6 Numero variabile di parametri<br />

Si possono definire funzioni con numero variabile di argomenti (variadiche). L’esempio più comune<br />

di funzione variadica è printf con tutte le sue varianti. Definire la propria funzione<br />

variadica richiede una certa attenzione e conoscenza del meccanismo di passaggio dei parametri,<br />

e non verrà quindi trattato in questa sede.<br />

Chiamare una funzione variadica è invece molto frequente e basta specificare correttamente<br />

tutti gli argomenti. Nel caso dei derivati di printf, uno dei primi argomenti è una stringa che<br />

specifica il numero e il tipo degli argomenti successivi. La funzione variadica usa la stringa <strong>per</strong><br />

sa<strong>per</strong>e cosa sono gli argomenti ulteriori; data la standardizzazione del formato della stringa, il<br />

compilatore può controllare tutti gli argomenti passati e avvertire del possibile errore in caso di<br />

incongruenze. Per funzioni variadiche non assimilabili a printf il controllo del compilatore non<br />

è previsto.<br />

100

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!