john wrote:
> --- In AVR-Chat@yahoogroups.com, Russell Shaw <rjshaw@...> wrote:
>> john wrote:
>>> I'm trying to declare a structure but I keep getting an error
> like this
>>> or similar depending on were I try to put __attribute__.
>>>
>>> error: expected '=', ',', ';', 'asm' or '__attribute__'
> before 'struct'
>>> Does avr-gcc allow plain-old structures? How should I write this
> to get
>>> it to compile?
>>>
>>> struct __attribute__ ((__packed__)) rb_fifo_struct_type
>>> {
>>> uint8_t *head;
>>> uint8_t *tail;
>>> uint8_t *dptr;
>>> };
>>> typedef struct rb_fifo_struct_type rbuff_t;
>> Try: __attribute__ ((packed));
>>
>> I think you should be doing:
>>
>> struct rb_fifo_struct_type
>> {
>> uint8_t *head __attribute__ ((packed));
>> uint8_t *tail __attribute__ ((packed));
>> uint8_t *dptr __attribute__ ((packed));
>> };
>> typedef struct rb_fifo_struct_type rbuff_t;
>>
>
> I get the same error with the __attribute__ assigned to the member
> vairables.
>
> For some reason if I put a semi colon in front of the structure the
> error goes away.
>
> ; //<------------
> struct rb_fifo_struct_type
> {
> uint8_t *head;
> uint8_t *tail;
> uint8_t *dptr;
> };
> typedef struct rb_fifo_struct_type rbuff_t;
When compiling the same code in gcc for x86, i don't get any error. Must mean
something in avr-gcc that isn't implemented. Could try (i don't think it has the
effect you want tho):
struct rb_fifo_struct_type
{
uint8_t *head;
uint8_t *tail;
uint8_t *dptr;
} __attribute__ ((packed));
typedef struct rb_fifo_struct_type rbuff_t;Message
Re: [AVR-Chat] Re: structures in gcc
2008-01-24 by Russell Shaw
Attachments
- No local attachments were found for this message.