On Feb 2, 2013, at 11:51 AM, englsprogeny1 wrote:
> Simple C question.. I guess that I am blowing! Maybe I didn't get enough sleep last night....
>
> Using AVR Studio 4.0 with GCC
>
> 1. I create a type that is a struct
> 2. I create multiple 'instances' of this type.
>
> I get the following errors when I Build All:
>
> menu.c:1729: error: expected declaration specifiers or '...' before 'offTimeStruct'
> menu.c:1742: error: 'eventOff' undeclared (first use in this function)
>
> typedef struct offTimeStruct
> {
> uint8_t endMinute;
> uint8_t endHour;
> };
As in another response the assigned label should go after the closing bracket
>
> offTimeStruct light1;
> offTimeStruct rocket;
>
> //menu.c: Line 1729
> void CalculateOffTime(uint8_t duration, offTimeStruct &eventOff)
You can pass either the struct (if it's small enough) or a pointer to the struct. You can't do this, it has no meaning.
> void CalculateOffTime(uint8_t duration, offTimeStruct *eventOff)
> {
> //menu.c: Line 1742
> eventOff.endMinute = 1;
Since you are changing values in the struct you would need to pass (and use) a pointer to the struct...
> eventOff->endMinute = 1;
>
> }
>
> funtion call from Main()
>
> CalculateOffTime(1, light1);
> CalculateOffTime(1, &light1);
&XXXXXX tells the compiler to pass the address of the data (struct)
*XXXXXX tells the compiler to access the data pointed to by the label.
[Non-text portions of this message have been removed]Message
Re: [AVR-Chat] typedef Structs pass by reference
2013-02-02 by Clark Martin
Attachments
- No local attachments were found for this message.