¿Qué es #nomacros (EP003) y está vivo?
-
20-08-2019 - |
Pregunta
El Lista de problemas de Evolution WG de 14 Febrero de 2004 tiene ...
EP003. #nomacros. Ver EI001. Nota por Stroustrup para ser escrito.
En términos generales (o exactos), ¿qué es #nomacros
, y está disponible como una extensión en cualquier lugar? Habría sido una herramienta de diagnóstico útil en un proyecto reciente que implica portar miles de archivos de C ++ de 1995 a un compilador de 2005, en comparación con la alternativa de ejecutar el código a través del preprocesador y examinar los archivos .i en busca de paquetes sorpresa.
Solución
Es solo una propuesta bajo consideración activa para su inclusión en C ++, pero aún no está disponible en los compiladores actuales. Si lee más abajo en la página, dice:
ES042. #nospam.
Proporcione un mecanismo de preprocesador para limitar las macros que entran y salen de un ámbito. Por ejemplo:
#nomacros
#in A B
…
#out A X
#endnomacros
No se expanden macros entre #nomacros y #endnomacros a menos que #in habilite explícitamente. No se definirán macros definidas entre #nomacros y #endnomacros después de #endnomacros a menos que #out lo habilite explícitamente.
Sugerencia de Bjarne Stroustrup. Después de la discusión en el EWG, se decidió buscar una solución que permitiera las macros utilizadas por las macros permitidas por & # 8220; #in & # 8221; para ser utilizado en la expansión de tales macros solamente.
#nomacros debería anidar.