Esercizi Macro Preprocessore C++
Codegrind Team•Jul 12 2024
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.
// file: 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;
}