Yahoo Groups archive

AVR-Chat

Index last updated: 2026-04-28 22:41 UTC

Message

Re: [AVR-Chat] typedef Structs pass by reference

2013-02-02 by Clark Martin

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]

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.