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

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

Сообщение Anonymous »


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

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

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

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

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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