Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 Git, 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?

like image 759
James Morris Avatar asked Jun 29 '11 19:06

James Morris


1 Answers

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.

like image 81
Matthew Slattery Avatar answered Oct 11 '22 13:10

Matthew Slattery