Я читал стандарт C11. В соответствии со стандартом C11 undefined поведение классифицируется на четыре разных типа. Номера в скобках относятся к подпункту C-стандарта (C11), который идентифицирует поведение undefined.
Пример 1: Программа пытается изменить строковый литерал (6.4.5). Это поведение undefined классифицируется как: undefined Поведение (требуется информация/подтверждение)
Пример 2: lvalue не определяет объект при оценке (6.3.2.1). Это поведение undefined классифицируется как: Критическое undefined Поведение
Пример 3: Объект имеет сохраненное значение, доступное иначе, чем lvalue допустимого типа (6.5). Это поведение undefined классифицируется как: Ограниченный undefined Поведение
Пример 4. Строка, на которую указывает аргумент mode
при вызове функции fopen
, точно не соответствует одной из указанных последовательностей символов (7.21.5.3). Это поведение undefined классифицируется как: Возможное соответствие языкового расширения
В чем смысл классификаций? Что передают эти классификации программисту?