Why "Redefinition of typedef" error with GCC 4.3 but not GCC 4.6?
I've been developing my application using GCC 4.6 for compilation but a user reported the "redefinition of typedef" error. After some confusion where I wrongfully told the user to fetch the latest source using G开发者_StackOverflow中文版it, I took a closer look and found something similar to this:
/* 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;
Which is quite easy to fix for the older GCC versions, but why is this no longer an error? Or does it need reporting?
This looks like a deliberate change...
I don't have 4.6 to hand, but it looks like you will get the warning if you use -pedantic
.
精彩评论