2013-04-29 13 views
10

Per esempio abc.c contiene una variabilePuoi esternare una variabile #define in un altro file?

#define NAME "supreeth" 

Può extern la variabile NAME in def.c?

+1

Una definizione è una direttiva preprocessore. Viene sostituito in linea durante la compilazione del codice. Dovrai definirlo in un file di intestazione (include). –

risposta

1

Se si dispone di #define NAME "supreeth" in abc.c, si può sicuramente avere una variabile extern con lo stesso nome in un altro file def.c, questo è per quanto riguarda il compilatore. Se stai implicando una sorta di dipendenza tra questi due, quella dipendenza/collegamento non avverrà. Ovviamente è confusa e una cattiva idea fare qualcosa del genere.

8

Non è possibile utilizzare extern con la macro. ma se si desidera che la macro visto da molti file C

mettere la macro definizione

#define NAME "supreeth" 

in un file di intestazione come def.h

quindi inserisci la tua def.h nella vostra C e quindi puoi usare la tua macro nel tuo file C in tutti gli altri file C se includi def.

+0

Cosa è possibile? Non esiste una variabile e il concetto di "extern" non si applica. –

+0

Non intendevo usare extern I ean che può definire la sua macro nel file di intestazione, quindi può vederlo dai suoi file C. potrebbe essere che devo essere più specifico aggiornerò la mia risposta – MOHAMED

14

Nel tuo codice NAME non è una variabile. È un simbolo pre-processore, il che significa che il testo NAME verrà sostituito ovunque nell'input con la stringa "supreeth". Questo accade per file, quindi non ha senso parlare di "esterno".

Se un particolare file C viene compilato senza tale #define, qualsiasi utilizzo di NAME rimarrà così com'è.

Problemi correlati