Я разрабатывал свое приложение с использованием 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, но почему это больше не ошибка? Или нужен отчет?