From: Maarten B. <sou...@ds...> - 2010-05-12 09:15:14
|
Hi Anthony, This is a known bug. See https://sourceforge.net/tracker/?func=detail&aid=1579664&group_id=599&atid=100599 Maarten > Try to remove struct keyword from extern struct ... line. > > I thing that compiler behaves according to standard, as typedef struct > typename defines type, so struct keyword should not be used, however > struct > tagname ... declares tag, so struct keyword is required. > > Ondrej > > > > -----Original Message----- > From: Anthony Asterisk [mailto:ant...@gm...] > Sent: Wednesday, May 12, 2010 1:57 AM > To: sdc...@li... > Subject: [Sdcc-user] sdcc reports syntax error if struct and typedef > usesame > name? > > > > When I compile this code: > > cat main.c > #include <string.h> > > typedef struct uip_eth_addr { > unsigned char addr[6]; > } uip_eth_addr; > > extern struct uip_eth_addr uip_ethaddr; > > void main (void) > { > } > > user@instant-contiki:~/sdcc_bug3$ sdcc main.c > > main.c:7: syntax error: token -> 'uip_eth_addr' ; column 26 > > > If I simply rename the typedef then it compiles fine: > > user@instant-contiki:~/sdcc_bug3$ !cat > cat main.c > #include <string.h> > > typedef struct uip_eth_addr { > unsigned char addr[6]; > } uip_eth_addr_t; > > extern struct uip_eth_addr uip_ethaddr; > > void main (void) > { > } > user@instant-contiki:~/sdcc_bug3$ !sd > sdcc main.c > > > No syntax error! > > Both versions compile with GCC. > > so is this: > > 1) a limitation of sdcc > 2) a bug in sdcc > 3) a non-standard behavror of gcc |