Я использую компилятор C89 (встроенные системы).
Я столкнулся с некоторым кодом C, где одна единица перевода определяет переменную как bool varName;
, где bool
- это typedef
из * 1006.*.Другой блок перевода вперед объявляет переменную следующим образом: extern char varName;
.
Это, очевидно, несоответствие типов и ошибка.У меня вопрос, какое именно правило это нарушает?Моя реакция коленного рефлекса состояла в том, что это нарушение ODR, но есть одно определение, поэтому я не уверен, что это нарушение ODR.