📢 Nuovo Corso Bootstrap Completo disponibile!

Esercizi Macro Preprocessore C++

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.
mio_header.h
#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;
}