avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [avr-gcc-list] Struct problem


From: Brian Cuthie
Subject: RE: [avr-gcc-list] Struct problem
Date: Fri, 30 Jan 2004 20:22:44 -0500

The problem, quite simply, is that because the size of TxBuf[] isn't
specified, the offset within the struct to RxBuf[] can't be computed at
compile time (which it needs to be).

To do what you want you'll need to change the struct so that instead of
arrays, TxBuf and RxBuf are pointers. Then malloc the memory you need and
store the addresses in TxBuf and RxBuf respectively.

You might want to re-read a few chapters in your C book.

-brian 

> -----Original Message-----
> From: address@hidden 
> [mailto:address@hidden On Behalf Of Eric Fu
> Sent: Friday, January 30, 2004 8:05 PM
> To: address@hidden
> Subject: [avr-gcc-list] Struct problem
> 
> Hi All,
> 
> I'm trying to declare a Structure for UART, so that it can be 
> used for more than one UARTs such as:
> typedef struct UART
> {
>  volatile byte RxHead;
>  volatile byte RxTail;
>  volatile byte TxHead;
>  volatile byte TxTail;
>  byte TxBuf[],RxBuf[];
> }UART;
> extern UART uart0;
> extern UART uart1; 
> 
> By doing this way, I can assign different buffer size to 
> different UART such as:
> byte uart0.RxBuf[RX_BUFFER_SIZE0];
> byte uart0.TxBuf[RX_BUFFER_SIZE0];
> byte uart1.RxBuf[RX_BUFFER_SIZE1];
> byte uart1.TxBuf[RX_BUFFER_SIZE1]; 
> 
> However, I get the following compile error:
> UART.h:47: error: flexible array member not at end of struct
> 
> Could anyone give me a hint on How to tell the compiler to do this?
> Thanks
> 
> Eric Fu
> _______________________________________________
> avr-gcc-list mailing list
> address@hidden
> http://www.avr1.org/mailman/listinfo/avr-gcc-list
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]