portata di #undef C ++
Domanda
Ho una domanda su come utilizzare #undef
alle macro Ridefinire.
Ho un global.h
di file che contiene una serie di # define-d macro. Nel codice che utilizza queste macro, trovo che i valori che tengono le macro non sono abbastanza generici. Voglio ridefinire le macro per renderli più generico. Ho scritto il seguente frammento di codice per fare proprio questo:
std::cout << endl << "Enter pitch threshold:" << endl;
std::cin >> pitchT;
#ifdef PitchThreshold
#undef PitchThreshold
#define PitchThreshold pitchT
#endif
Le mie domande sono:
Fa utilizzando un #undef in questo modo assicurano ridefinizione della macro in tutti i file di origine, o è locale alla funzione in cui sono scritte le righe di codice di cui sopra? Qual è la portata degli operatori #undef e #define?
Che cosa posso fare (a parte cambiare le macro nel file in cui sono # define-d stesso) al fine di garantire che le definizioni di macro vengono modificati in tutti i file di origine?
Grazie,
Sriram
Soluzione
#ifdef
è una direttiva del preprocessore, questo significa che sarà applicato prima che il codice sorgente viene compilato. Ciò significa che sarà influenzato solo il codice sorgente 'di sotto'. Se si esegue il codice sorgente attraverso il preprocessore sarete in grado di vedere il risultato. Che vi darà un quadro più chiaro nel funzionamento del preprocessore.
Altri suggerimenti
Il campo di applicazione l'operatore #undef è l'intero file dopo si chiama. Questo include tutti i file che includono esso (perché il preprocessore solo catene i file insieme.) Perché fa parte del preprocessore che non ha cose strane come scopo.