🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

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;
}