GCC и Clang, по-видимому, не предлагают такую функцию.
Документация для предупреждающих сообщений GCC: здесь (для версии 8.2; для поиска документации для других версий запустите здесь ). Никто из них не упоминает о проверке зарезервированных идентификаторов или идентификаторов, которые начинаются со знака подчеркивания, за которым следует знак подчеркивания или заглавная буква, за исключением некоторых особых случаев (например, встроенного __FILE__
), которые бесполезны для этого вопроса.
Документация Clang здесь (это ссылка на текущую версию, поэтому ожидается, что она будет обновлена в будущем). Он также не упоминает о проверке зарезервированных идентификаторов.
В Clang, -Weverything
включает всю диагностику, поэтому, если при компиляции кода образца с -Weverything
диагностика не появляется, требуемая диагностика в Clang не реализована.
Похоже, нет никаких причин, по которым компилятор не может этого сделать. Clang отслеживает источник исходного текста. Например, если расширение макроса приводит к синтаксической ошибке, Clang печатает несколько диагностических строк, показывая имена, номера строк и имена файлов соответствующих макросов. Кроме того, Clang подавляет предупреждения в системных заголовках, и ему можно указывать обрабатывать дополнительные файлы (например, заголовки для библиотек) аналогично #pragma clang system_header
. Таким образом, представляется возможным, чтобы Clang выдал предупреждение для любого зарезервированного идентификатора, который не исходит из системного заголовка. Отсутствие такой функции может быть связано с отсутствием спроса.