为什么"重新定义typedef"错误与GCC 4.3而不是GCC 4.6?

Jam*_*ris 5 gcc typedef compiler-errors redefinition

我一直在使用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;
Run Code Online (Sandbox Code Playgroud)

对于较旧的GCC版本,这很容易修复,但为什么这不再是错误?还是需要报告?

Mat*_*ery 6

这看起来像是故意改变 ......

我没有4.6手,但看起来如果你使用你会得到警告-pedantic.