Assegnamento e define.

Pasquale 90
Buongiorno,
sto leggendo gli appunti inerenti ai fondamenti di C in particolare mi chiedo qual è la differenza nell'assegnare ad una costante un intero con la direttiva #define cioè qual è l'utilità di questo nuovo concetto ?

Io mi sono dato una mezza risposta cioè
con l'assegnamento posso appunto assegnare alla costane $i$ un valore o un espressione quindi nell'esecuzione il valore di $i$ può mutare invece con la direttiva #define questo non può avvenire cioè una volta assegnato il valore o espressione questo non cambia.

Giusto ?

Risposte
Super Squirrel
Ciao, ti posto un paio di link:

https://stackoverflow.com/questions/644 ... 72#6442372
https://stackoverflow.com/questions/524 ... 45#5248645

Tra le varie cose si deduce anche che in C la dimensione di un array statico può essere "assegnata" con una macro, ma non con una "variabile costante".

Pasquale 90
Grazie mille era quello che cercavo :smt023 :smt023

vict85
Nota che C e C++ hanno comportamenti diversi. Chi programma in C++ difficilmente usa i [inline]define[/inline] per definire valori costanti, specialmente dopo l'arrivo dei [inline]constexpr[/inline].

In genere io lo uso per fare cose come:
#define RETURN_ON_ERROR(func)                                                                      \
    do                                                                                             \
    {                                                                                              \
        ErrorType error = (func);                                                                  \
        if (error != NO_ERROR)                                                                     \
            return error;                                                                          \
    } while (0)


In C ci sono limitazioni come quella relativa alla dimensione degli array, quindi è più usata.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.