Esercizi Macro Preprocessore C++
- Esercizio 1: Definizione di una semplice macro
- Esercizio 2: Macro con parametri
- Esercizio 3: Macro condizionali
- Esercizio 4: Macro per il controllo delle inclusioni multiple
- Esercizio 5: Macro per il logging
- Esercizio 6: Macro per la scelta tra due valori
- Esercizio 7: Macro per concatenare token
- Esercizio 8: Macro per convertire un valore in stringa
Ecco degli esercizi semplici con soluzione per praticare l’utilizzo delle macro preprocessore in C++.
Esercizio 1: Definizione di una semplice macro
Definire una macro per il valore di Pi greco e usarla in un programma per calcolare la circonferenza di un cerchio.
#include <iostream>
#define PI 3.14159
int main() { double raggio = 5.0; double circonferenza = 2 * PI * raggio; std::cout << "Circonferenza: " << circonferenza << std::endl; return 0;}
Esercizio 2: Macro con parametri
Definire una macro per calcolare il quadrato di un numero e usarla in un programma.
#include <iostream>
#define QUADRATO(x) ((x) * (x))
int main() { int numero = 4; std::cout << "Il quadrato di " << numero << " è " << QUADRATO(numero) << std::endl; return 0;}
Esercizio 3: Macro condizionali
Usare le macro condizionali per compilare parti diverse di codice a seconda di una definizione.
#include <iostream>
#define DEBUG
int main() {#ifdef DEBUG std::cout << "ModalitĂ di debug attiva" << std::endl;#else std::cout << "ModalitĂ di debug disattivata" << std::endl;#endif return 0;}
Esercizio 4: Macro per il controllo delle inclusioni multiple
Definire una macro di guardia per prevenire inclusioni multiple di un file di intestazione.
#ifndef MIO_HEADER_H#define MIO_HEADER_H
void funzioneEsempio();
#endif // MIO_HEADER_H
// file: main.cpp#include <iostream>#include "mio_header.h"
void funzioneEsempio() { std::cout << "Funzione esempio" << std::endl;}
int main() { funzioneEsempio(); return 0;}
Esercizio 5: Macro per il logging
Definire una macro per il logging di messaggi di debug.
#include <iostream>
#define LOG(msg) std::cout << "LOG: " << msg << std::endl
int main() { LOG("Inizio del programma"); // altre operazioni LOG("Fine del programma"); return 0;}
Esercizio 6: Macro per la scelta tra due valori
Definire una macro per restituire il massimo tra due valori.
#include <iostream>
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int main() { int x = 5; int y = 10; std::cout << "Il massimo tra " << x << " e " << y << " è " << MAX(x, y) << std::endl; return 0;}
Esercizio 7: Macro per concatenare token
Definire una macro per concatenare due token.
#include <iostream>
#define CONCATENA(a, b) a##b
int main() { int xy = 10; std::cout << "Il valore di xy è " << CONCATENA(x, y) << std::endl; return 0;}
Esercizio 8: Macro per convertire un valore in stringa
Definire una macro per convertire un valore in una stringa.
#include <iostream>
#define STRINGIFY(x) #x
int main() { std::cout << "Il valore di PI come stringa è " << STRINGIFY(3.14159) << std::endl; return 0;}