Si può scrivere:
?????codice:#define extern IDC_TXTBOX 1001
Effettivamente non da errori... ma ha senso?
Se si... extern lo devo mettere dove dichiaro tutte le variabile o nel file dove lo utilizzo??
grazie...
Si può scrivere:
?????codice:#define extern IDC_TXTBOX 1001
Effettivamente non da errori... ma ha senso?
Se si... extern lo devo mettere dove dichiaro tutte le variabile o nel file dove lo utilizzo??
grazie...
La extern in una define non ha senso ...
La parola chiave 'extern' serve per dichiarare che una variabile o funzione è "da qualche altra parte", in genere in un altro file sorgente oppure anche più avanti nello stesso file.Originariamente inviato da Il Pazzo
Si può scrivere:
?????codice:#define extern IDC_TXTBOX 1001
Effettivamente non da errori... ma ha senso?
Se si... extern lo devo mettere dove dichiaro tutte le variabile o nel file dove lo utilizzo??
Esempio:
sorgente1.c
sorgente2.ccodice:#include <stdio.h> extern int pippo; extern void prova (void); int main (void) { printf ("%d\n", pippo); prova (); return 0; }
codice:#include <stdio.h> int pippo = 12; void prova (void) { printf ("Prova\n"); }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Attenzione che scrivendo:
non solo non da errori ma cambia completamente la keyword extern. Cioè se scrivo ancora:codice:#define extern IDC_TXTBOX 1001
allora si che avrò un errore perchè il preprocessore cambierà il codice nel modo seguente:codice:#define extern IDC_TXTBOX 1001 ... extern int ciao;
che ovviamente è senza senso. Non solo se la define la faccio così:codice:... IDC_TXTBOX 1001 int ciao;
ciao ora non sarà una variabile esterna ma una variabile statica ! Se quindi fosse definita in un'altro file (cpp) con qualcosa del tipo:codice:#define extern static extern int ciao;
senza la define una print di ciao darebbe 10, con la define darebbe 0 (perchè in effetti ciao sarebbe un'altra variabile)...quindi attenzione con le define che non danno errori....codice:int ciao = 10;
![]()
ah ok ok grazie... quindi l'unico modo per ridefinire una costante ad esempio (senza cambiarne il valore) è quello di
1)riscrivere il define nel file in cui mi serve o
2)di inserire il file d'include (dov è definita la costante) sempre nel file che mi serve....
no c'è altro modo...
Prima di tutto una define non è una costante ma una defineQuindi si...per cambiare il valore di una define devi riscrivere la define (la define è usata solo al momento della pre-compilazione e non esiste in memoria alcunchè).
Se vuoi usare una define in un file devi scrivere la define o includere il file (.h) che contiene la define.
Se poi includi il file con la define nel file pippo.cpp e per qualche ragione vuoi ridefinirla solo in questo file (ad esempio quando il file con la define contiene molte define che vuoi usare e solo una deve essere diversa) puoi sempre fare una #undef e poi la nuova #define (se fai un'altra #define ti da errore).
![]()