Che cos'è #nomacros (EP003) ed è vivo?
-
20-08-2019 - |
Domanda
Elenco dei problemi di Evolution WG di 14 Febbraio 2004 ha ...
EP003. #nomacros. Vedi EI001. Nota di Stroustrup da scrivere.
In termini approssimativi (o esatti), che cos'è #nomacros
ed è disponibile come estensione ovunque? Sarebbe stato un utile strumento diagnostico in un recente progetto che prevedeva il porting di migliaia di file di C ++ vintage 1995 a un compilatore del 2005, rispetto all'alternativa di eseguire il codice attraverso il preprocessore ed esaminare i file .i per pacchetti a sorpresa.
Soluzione
È solo una proposta sotto attenta considerazione per l'inclusione in C ++, ma non è ancora disponibile negli attuali compilatori. Se leggi più in basso nella pagina, dice:
ES042. #nospam.
Fornisce un meccanismo preprocessore per limitare le macro che entrano e escono da un ambito. Ad esempio:
#nomacros
#in A B
…
#out A X
#endnomacros
Nessuna macro viene espansa tra #nomacros e #endnomacros se non esplicitamente abilitato da #in. Nessuna macro definita tra #nomacros e #endnomacros verrà definita dopo #endnomacros se non esplicitamente abilitata da #out.
Suggerimento di Bjarne Stroustrup. Dopo aver discusso nel CAE, è stato deciso di cercare una soluzione che consentisse le macro utilizzate dalle macro consentite da & # 8220; #in & # 8221; da utilizzare solo nell'espansione di tali macro.
#nomacros dovrebbe essere nidificato.