Обоснование того, почему переопределение макроса без undef приводит к неправильной форме программыC++

Программы на C++. Форум разработчиков
Anonymous
Обоснование того, почему переопределение макроса без undef приводит к неправильной форме программы

Сообщение Anonymous »


Согласно стандартному макросу переопределение запрещено без использования #undef перед:

Однако следующие переопределения недействительны:

#define OBJ_LIKE (0) // другая последовательность токенов #define OBJ_LIKE (1 - 1) // разные пробелы В то же время разрешено использовать #undef для макросов, которые ранее вообще не были определены:

Игнорируется, если указанный идентификатор в настоящее время не определен как имя макроса.

Мне интересно, каково обоснование этого, то есть запрета переопределения без #undef в середине? Какие-то цели оптимизации компилятора или что?

Вернуться в «C++»