Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Preprocessore e Direttive


Preprocessore e Direttive
#define #include

Il preprocessore in C è una fase che precede la compilazione del codice sorgente. Il preprocessore si occupa di eseguire diverse operazioni, tra cui la sostituzione di macro, l'inclusione di file e la condizionalizzazione del codice. Le direttive del preprocessore iniziano con il simbolo `#`.


Direttive del Preprocessore:


`#define` per le Macro Oggetto (Object-like Macro)


Le macro oggetto vengono definite utilizzando `#define` e possono essere utilizzate per definire costanti o eseguire sostituzioni di testo.


#include <stdio.h>

// Definizione di una macro oggetto
#define PI 3.14159

int main() {
    // Utilizzo della macro oggetto
    double raggio = 5.0;
    double area = PI * raggio * raggio;

    printf("L'area del cerchio è: %f\n", area);

    return 0;
}

`#define` per le Macro Funzione (Function-like Macro)


Le macro funzione vengono definite utilizzando `#define` seguito da parametri e un blocco di codice. Possono essere utilizzate per creare funzioni-like sostituendo il codice durante la fase di preprocessamento.


#include <stdio.h>

// Definizione di una macro funzione
#define QUADRATO(x) ((x) * (x))

int main() {
    // Utilizzo della macro funzione
    int risultato = QUADRATO(5);

    printf("Il quadrato di 5 è: %d\n", risultato);

    return 0;
}


L'Operatore `#` nelle Direttive

L'operatore `#` all'interno delle direttive del preprocessore viene utilizzato per eseguire l'operazione di "stringificazione", cioè convertire il suo argomento in una stringa letterale.


#include <stdio.h>

// Definizione di una macro con stringificazione
#define STRINGIFY(x) #x

int main() {
    // Utilizzo della stringificazione
    printf("Il valore di x è: %s\n", STRINGIFY(42));

    return 0;
}


La Direttiva `#include`

La direttiva `#include` viene utilizzata per includere il contenuto di un file header in un file sorgente.


#include <stdio.h>

int main() {
    // Utilizzo della direttiva #include per includere la libreria standard di input/output
    printf("Ciao, mondo!\n");

    return 0;
}

In questo esempio, la libreria standard di input/output (`stdio.h`) viene inclusa nel programma utilizzando la direttiva `#include`.
Le direttive del preprocessore forniscono un modo per personalizzare e gestire il processo di compilazione e sono uno strumento potente per rendere il codice più flessibile e leggibile.