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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top