# V1059. Macro name overrides a keyword/reserved name. This may lead to undefined behavior.

Анализатор обнаружил макрос, имя которого перекрывает ключевое слово или зарезервированный стандартом идентификатор.

Пример:

    #define sprintf std::printf

Здесь из-за коллизии имен вызовы стандартной функции 'sprintf' после препроцессирования заменятся на вызовы 'printf'. Такая замена приведет к некорректной работе программы.

Диагностика также сообщает об удалении предопределенных макросов.

Пример:

    #undef assert

Диагностика игнорирует переопределения ключевых слов, если они идентичны с точки зрения семантики.

Примеры:

    #define inline __inline
    #define inline __forceinline
    #define template extern template

Данная диагностика классифицируется как:

CERT-DCL51-CPP