PDA

Visualizza la versione completa : [C/C++] Uso di #define assieme ad EXTERN


Il Pazzo
10-01-2007, 01:00
Si può scrivere:


#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...

oregon
10-01-2007, 06:41
La extern in una define non ha senso ...

andbin
10-01-2007, 09:18
Originariamente inviato da Il Pazzo
Si può scrivere:


#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??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.

Esempio:

sorgente1.c

#include <stdio.h>

extern int pippo;
extern void prova (void);

int main (void)
{
printf ("%d\n", pippo);
prova ();
return 0;
}

sorgente2.c

#include <stdio.h>

int pippo = 12;

void prova (void)
{
printf ("Prova\n");
}

fastcoder
10-01-2007, 10:14
Attenzione che scrivendo:


#define extern IDC_TXTBOX 1001

non solo non da errori ma cambia completamente la keyword extern. Cioè se scrivo ancora:


#define extern IDC_TXTBOX 1001

...
extern int ciao;


allora si che avrò un errore perchè il preprocessore cambierà il codice nel modo seguente:


...
IDC_TXTBOX 1001 int ciao;

che ovviamente è senza senso. Non solo se la define la faccio così:


#define extern static

extern 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:


int ciao = 10;

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....
:)

Il Pazzo
10-01-2007, 11:33
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...

fastcoder
10-01-2007, 11:49
Prima di tutto una define non è una costante ma una define :) Quindi 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).

:)

Il Pazzo
10-01-2007, 11:57
si perfetto grazie.... :D

Loading