1 Il preprocessore. 2 Viene invocato dal gcc prima della compilazione vera e propria ( cpp ) Esegue delle manipolazioni testuali sul file –sostituisce.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

INFORMATICA Altre Istruzioni di I/O
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente.
Introduzione al linguaggio C
Commenti C#.
3TC – 5/11/2010 Cicli while e do.. While Contatori e Totalizzatori.
Sviluppo di programmi strutturati
PHP.
Marco Barisione Estendere Python in C.
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Introduzione al linguaggio C
Introduzione al linguaggio C
Anno accademico Il preprocessore del linguaggio C.
Anno accademico Introduzione al linguaggio C.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
FUNZIONI DI BIBLIOTECA
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
Process synchronization
Laboratorio di Linguaggi lezione II Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Laboratorio di Linguaggi lezione II Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Introduzione al linguaggio C
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Argomenti Direttive di Preprocessore: Compilazione Condizionale
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Le funzioni.
Espressioni condizionali
Le funzioni a tempo di esecuzione
Programmazione in Java
Manipolazione dei dati
CODIFICA Da flow-chart a C++.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
INTERFACCIAMENTO ASSEMBLY - C++
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
BIOINFO3 - Lezione 291 PATTERN MATCHING Imparato cosa sono e come si usano le espressioni regolari per individuare dei pattern, vediamo come si usano in.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 5 (Deitel) Le funzioni Indice degli argomenti Introduzione Moduli nei programmi C 5.3.
Unità Didattica 1 Linguaggio C
Anno accademico Le istruzioni di controllo in C.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Lezione 3 Struttura lessicale del linguaggio
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
Algoritmi e basi del C Struttura di un programma
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Il linguaggio C Puntatori e dintorni.
Il pre-processore C modifica il testo del programma prima che esso raggiunga il compilatore vero e proprio. ANCORA SUL PRE-PROCESSORE C File sorgente.c.
Il linguaggio C Un primo programma C : un primo programma (2) /* Programma che calcola il massimo fra tre numeri inseriti da tastiera */ #include #define.
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
1 Laboratorio di Programmazione di Sistema - C Susanna Pelagatti Ricevimento: Me ,
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Librerie… Marco D. Santambrogio – Ver. aggiornata al 20 Luglio 2015.
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

1 Il preprocessore

2 Viene invocato dal gcc prima della compilazione vera e propria ( cpp ) Esegue delle manipolazioni testuali sul file –sostituisce nomi con testo –elimina e inserisce testo Le righe di codice che iniziano per # sono direttive per il cpp Il risultato del preprocessore si può vedere con gcc -E

3 Il preprocessore : direttive #include #include “file” –sono rimpiazzate dal contenuto del file #define nome testo –macro senza parametri –tutte le occorrenze di nome sono rimpiazzate dal testo specificato

4 Macro con parametri È possibile definire macro con parametri! #define nome(a1,…,an) testo –in questo caso il nome simbolico da sostituire può essere specializzato ad ogni occorrenza della macro es. #define PRODOTTO(X,Y) (X)*(Y) … a = PRODOTTO(a+1,b); c = PRODOTTO(x+y,k); …

5 Macro con parametri (2) –Dopo la passata del pre-processore... /* la linea della define non c’e’ piu’ */ … a = (a+1)*(b); c = (x+y)*(k); … –Le parentesi nella definizione sono importanti per avere la precedenza corretta degli operatori!

6 Macro con parametri (3) –Una definizione scorretta sarebbe. #define PRODOTTO(X,Y) X*Y … a = PRODOTTO(a+1,b); c = PRODOTTO(x+y,k); …

7 Macro con parametri (4) –Risultato dopo il pre-processore... /* la linea della define non c’e’ piu’ */ … a = a+1*b; c = x+y*k; …

8 Macro e Funzioni Attenzione alla differenza fra macro con parametri e funzioni ! –(1) Le macro sostituiscono testo per testo –(2) una macro viene espansa a tempo di compilazione e non genera chiamate in fase di esecuzione

9 Macro e Funzioni (2) Attenzione alla differenza fra macro con parametri e funzioni ! –(3) Le macro non sono tipate! Funzionano indipendentemente dal tipo degli argomenti #define PRODOTTO(X,Y) X*Y double a,b; int x,y,k,c; … a = PRODOTTO(a+1,b); c = PRODOTTO(x+y,k);

10 Macro su più righe... –Attenzione : il testo da sostituire va da X fino alla fine della riga #define PRODOTTO(X,Y) X*Y … –Per fare macro su più righe usare backslash(\) #define PRODOTTO(X,Y) \ X*Y

11 Compilazione condizionale #if #ifdef #ifndef #endif : –sono direttive al preprocessore che permettono di includere selettivamente alcuni pezzi del codice durante la compilazione –#if #if espr_cond #endif Questa zona viene inclusa solo se espr_cond è verificata (cioè se è diversa da 0)

12 Compilazione condizionale (2) #if #ifdef #ifndef #endif : –es: un modo rapido per commentare un’area che ha già dei commenti /*…*/ –il C non ammette commenti annidati #if 0 #endif Questa zona non viene mai inclusa

13 Compilazione condizionale (3) #if #ifdef #ifndef #endif : –#ifdef nome testa se nome è già stato definito con una #define #ifdef nome #endif Questa zona viene inclusa solo se nome è stato definito con una #define

14 Compilazione condizionale (4) #if #ifdef #ifndef #endif : –#ifndef nome testa se nome non è già stato definito con una #define #ifndef nome #endif Questa zona viene inclusa solo se nome non è già stato definito con una #define

15 Compilazione condizionale (5) #if #ifdef #ifndef #endif : –quando si usano ? –Es. escludere condizionalemnte il codice di debugging –se ho finito il debugging tolgo la #define #define DEBUG …. #ifdef DEBUG #endif assert(..) printf(..)

16 Compilazione condizionale (6) #if #ifdef #ifndef #endif : –questo si può fare utilizzando gcc -D gcc -Dnome=val file.c inserisce all’inizio di file.c (prima del preprocessing) #define nome val –in questo caso (1) durante il debugging uso -D (2) quando il debugging è finito compilo senza -D ed il codice di test non viene generato