Что такое #nomacros (EP003) и жив ли он?
-
20-08-2019 - |
Вопрос
А Список проблем WG Evolution от 14 февраля 2004 г. имеет ...
EP003.#номакросы.См. EI001.Примечание от Stroustrup для написания.
Грубо (или точно) что такое #nomacros
, и доступно ли оно где-нибудь в качестве расширения?Это было бы полезным диагностическим инструментом в недавнем проекте, включающем перенос тысяч файлов C++ версии 1995 года на компилятор 2005 года, по сравнению с альтернативой запуска кода через препроцессор и проверки файлов .i на наличие неожиданных пакетов.
Решение
Это всего лишь предложение, которое активно рассматривается для включения в C++, но до сих пор недоступно в текущих компиляторах.Если вы прочитаете дальше на странице, там написано:
ES042.#без спама.
Предоставьте механизм препроцессора для ограничения входа и выхода макросов из области действия.Например:
#nomacros
#in A B
…
#out A X
#endnomacros
Никакие макросы не развертываются между #nomacros и #endnomacros, если это явно не разрешено #in.Никакие макросы, определенные между #nomacros и #endnomacros, не будут определены после #endnomacros, если это явно не разрешено #out.
Предложение Бьярна Страуструпа.После обсуждения в EWG было решено найти решение, которое позволило бы использовать макросы, используемые макросами, разрешенными с помощью «#in», только при расширении таких макросов.
#nomacros должен быть вложенным.