Почему ошибка «Переопределение typedef» с GCC 4.3, но не с GCC 4.6?

Я разрабатывал свое приложение с использованием GCC 4.6 для компиляции, но пользователь сообщил об ошибке «переопределения typedef». После некоторой путаницы, когда я ошибочно сказал пользователю получить последний исходный код с помощью Git, я присмотрелся и обнаружил нечто похожее на это:

/* mystruct.h */

#ifdef MYSTRUCT_H
#define MYSTRUCT_H

typedef struct _mystruct mystruct

#endif



/* mystruct.c */
#include "mystruct.h"

typedef struct _mystruct
{
    int a;
    int b;

} mystruct;

Это довольно легко исправить для более старых версий GCC, но почему это больше не ошибка? Или нужен отчет?

5
задан James Morris 29 June 2011 в 19:44
поделиться