V2015. Identifiers that start with '__' or '_[A-Z]' are reserved.

Данное диагностическое предупреждение добавлено по просьбе пользователей.

Согласно стандарту C++ идентификаторы, содержащие в себе два подчеркивания подряд или начинающиеся c подчеркивания и заглавной буквой, зарезервированы для использования в реализации языка и стандартной библиотеки. В C это правило звучит немного по-другому: зарезервированные идентификаторы начинаются с двух подчеркиваний подряд или с подчеркивания и заглавной буквой.

Такие идентификаторы могут вызвать проблемы из-за возможных коллизий с компилятором. К примеру, следующий код может плохо оптимизирован:

#include <string.h>

int my_strcmp(const char *s1, const char *s2);
#define __strcmp my_strcmp // <=

void foo(const char *a, const char *b)
{
  ....
  if (!__strcmp(a, b))
  {
    // do something
  }
  ....
}

'__strcmp' может быть объявлена как встроенная в компилятор функция (интринсик), которую компилятор может оптимизировать лучше, чем непосредственный вызов функции 'strcmp'.


Найденные ошибки

Проверено проектов
381
Собрано ошибок
13 764

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;