Не переопределяйте зарезервированные идентификаторы
Не объявляейте и не определяйте имена, используемые в стандартной библиотеке. Любые имена содержащие двойное подчеркивание или начинающиеся со знака подчеркивания, за которым следует заглавная буква зарезервированы для реализации (для нужд компилятора или стандартной библиотеки). Любые имена в глобальном пространстве имен, начинающиеся со знака подчеркивания, зарезервированы для реализации. Идентификаторы литеральных суффиксов, не начинающиеся со знака подчеркивания, зарезервированы для будущих версий стандарта.
Неправильно (возможны конфликты с зарезервированными именами):
Правильно:
Неправильно (литеральные суффиксы должны начинаться со знака подчеркивания):
Правильно:
Неправильно (глобальная переменная начинается с подчеркивания):
Правильно:
Неправильно (SIZE_MAX определена в стандартной библиотеке как размер типа std::size_t):
#include <cstdint>
enum max_values {
SIZE_MAX = 100, // конфликт с зарезервированным макросом
// ...
};
Правильно: