Рассмотрите следующую программу: (Смотрите демо-версию here).Почему эта программа компилируется в C11, но не в C99?
#include <stdio.h>
struct Test
{
int a;
};
typedef struct Test t;
typedef struct Test t;
int main()
{
t T={9};
printf("%d",T.a);
}
Программа компилируется в компиляторе C11, но не скомпилирована в компиляторе C99. Зачем? Какова причина? Мой компилятор GCC 4.8.1 дает следующие предупреждения:
[Warning] redefinition of typedef 't' [-Wpedantic]
[Note] previous declaration of 't' was here
Компилятор дает вам подсказку или просто отказывается скомпилировать это, не вызывая никаких сообщений об ошибках? – juanchopanza
@PravasiMeet У меня нет, потому что сегодня у меня нет голосов, но, вероятно, потому, что у вас не хватает тщательности и ошибки, которые вы получаете, отсутствуют. – Magisch
@juanchopanza: по умолчанию GCC компилирует это как расширение компилятора, но если я использую параметр -pedantic-errors, то он не скомпилирован? Компилятор дает предупреждения. – Destructor