Go Down

Topic: il #define? (Read 1 time) previous topic - next topic

brando

In realtà c'è ben poco da illustrare, nonostante le guide e gli esempi, non riesco bene a comprendere la differenza pratica di suddetta istruzione  :~
Perchè non utilizzare una variabile ma un #define, per impostare il collegamento di un led ad un pin per esempio?

Code: [Select]
#define LED 13
int  led = 13;
 

PaoloP

Col primo crei un etichetta "LED" che verrà sostituita prima di compilare il programma col numero 13.
Nel secondo caso crei una variabile di nome "led" che vale 13.
Di solito si usa il #define quando devi indicare dei dati fissi, ovvero che non verranno cambiati durante l'esecuzione del programma.

Ti rinvio a questa pagina che spiega per bene le direttive preprocessore e altre cosette --> http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/14Direttive.html
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

leo72

Secondo mio modesto parere si dovrebbe evitare l'uso delle #define per definire delle costanti ma utilizzare la parola chiave const.
Le #define sono ottime per passare al compilatore delle porzioni di codice da scegliere in base a determinate situazioni ma l'uso di const è IMHO più coerente e semanticamente corretto.

m_ri

#3
Sep 28, 2012, 12:11 pm Last Edit: Sep 28, 2012, 12:15 pm by m_ri Reason: 1
mi aggiungo anch'io..
define:è più da c,non è tipizzata se non lo fai te esplicitamente(e non è molto bello),non ha uno scope e alcuni debugger al posto di visualizzarti la costante,ti visualizzano direttamente il nome..
const: è nuovo e più da c++,risolve i problemi sopracitati,ma x esempio non sempre può essere usata come dimensione di un array globale..inoltre non puoi usarlo per cambiare il codice durante la compilazione..e di solito non puoi usarlo nei case degli switch..tutto ciò perchè const viene visto come una variabile,anche se poi spesso il compilatore la fa sparire..e in alcuni casi non lavora troppo bene coi template,penso..

brunialti

si può discure se usare #define o una variabile di tipo const, ma ci sono situazioni in cui il #define non è sostituibile, per esempio nella compilazione condizionale, dove si definisce una "costante" mediante #define e si usa #ifdef per verificare se compilare o meno un pezzo di codice. Caso tipico: per evitare di avere conflitti negli #include dei file di tipo  .h

tuxduino

IMHO la compilazione condizionale è il mestiere di #define. Le costanti è meglio definirle con const. Più controlli si hanno da parte del compilatore, meno probabili sono i bug :)

leo72


IMHO la compilazione condizionale è il mestiere di #define. Le costanti è meglio definirle con const. Più controlli si hanno da parte del compilatore, meno probabili sono i bug :)

Approvo

superp



IMHO la compilazione condizionale è il mestiere di #define. Le costanti è meglio definirle con const. Più controlli si hanno da parte del compilatore, meno probabili sono i bug :)

Approvo

Sottoscrivo
"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

Go Up