Forum: Mikrocontroller und Digitale Elektronik Verständnisproblem Makro funktionsweise


von mxt (Gast)


Lesenswert?

Hi, ich arbeite mich gerade in fremdcode ein und bin auf folgendes 
gestoßen:
1
typedef struct
2
{
3
  uint32 shot;
4
  uint8  active;
5
}my_Struct;
6
7
#define def_timer_1ms(timer_Id) my_Struct timer_Id

Im code wird das nun so verwendet
1
void test (void)
2
{
3
   def_timer_1ms(my_timer_id);
4
   variable = function(my_timer_id);
5
}

my_timer_id wird niergends definiert.

Mein Verständnis ist jetzt, dass my_timer_id über das makro definiert 
wird?
Wenn ja, verstehe ich nicht genau was in der variablen drin steht.
Ich hätte jetzt eine #define wie folgt erwartet:
1
#define def_timer_1ms(timer_Id)  {timer_Id.shot=variable; timer_Id.active=TRUE;}

Gibt es hierzu eine kurze erklärung oder literatur?

Ich danke euch schonmal für die Hilfe :-)

gruß
mxt

von tzzazicki (Gast)


Lesenswert?

mxt schrieb:
> Gibt es hierzu eine kurze erklärung oder literatur?

In jedem brauchbaren C-Buch

von Huch (Gast)


Lesenswert?

>my_timer_id wird niergends definiert.

Doch. Es wird definiert. Schau Dir mal Deinen Code an.

1
typedef struct
2
{
3
  uint32 shot;
4
  uint8  active;
5
}my_Struct;
6
7
#define def_timer_1ms(timer_Id) my_Struct timer_Id

Das #define sagt, das an jeder Stelle im Sourcecode das auftreten von 
def_timer_1ms mit parameter timer_Id durch my_Struct timer_Id ersetzt 
wird.

In Deinem Quellcode
1
void test (void)
2
{
3
   def_timer_1ms(my_timer_id);
4
   variable = function(my_timer_id);
5
}

tritt genau def_timer_1ms auf.
Also wird es ersetzt durch
1
void test (void)
2
{
3
   my_Struct my_timer_id;
4
   variable = function(my_timer_id);
5
}

Damit ist my_timer_id auch definiert.
Das ist genau die Funktionsweise eines Makros.

von Huch (Gast)


Lesenswert?

Was hingegen fehlt, falls Du das nicht schon weisst ist die Definition 
von variable und function.

von Huch (Gast)


Lesenswert?

Das hier:
1
#define def_timer_1ms(timer_Id)  {timer_Id.shot=variable; timer_Id.active=TRUE;}
Ergibt ja nicht die Definition einer Variablen sondern das setzte von 
Strukturelementen. Das setzt aber die Definition voraus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.