Probleme mit Makro Funktionen in Ansi C

Gast #1653932
Lesenswert?

Hi, ich hab Probleme mit folgenden Makros:
1
#define X_ALLOC(Size)          MEM_MALLOC(Size,0)
2
#define X_MALLOC(Size, Type)   (void*)MEM_MALLOC(Size, Type)
3
#define X_FREE(MemBlock)       free(MemBlock)

Ich möchte zum Beispiel MEM_MALLOC mit malloc von der stdlib.h 
verbinden.
Dies soll allerdings in einer anderen Headerdatei passieren.
Wie mache ich das?
#1654015
Lesenswert?

#define macht nichts anderes als Textersetzungen.
Du gibst den Ausgangstext an (der Makro-Name) und der Rest der Zeile ist 
der Text, der anstelle dieses Textes eingesetzt werden soll.

Im grunde nichts anderes als 'Suchen und Ersetzen' in deinem Texteditor.

Dh. du hast in der Verwendung zb die Zeile

    i = A(5);

und du möchtest dass der COmpiler eigentlich dieses hier zu Gesicht 
bekommt:


    i = call_func( foo( 5 ) );

was muss passieren, damit eine Textersetzung das leistet? Der Text 'A( 
irgendwas )' muss durch 'call_func( foo ( irgendwas ) )' ersetzt werden. 
Oder eben in Präprozessor Schreibweise:

#define A(x)   call_func( foo( x ) )

Wenn du also ein Makro schreiben willst, dann überleg dir, was letzten 
Endes nach der Textersetzung rauskommen soll. Das leitet dich dann 
dahingehend, wie das Makro zu schreiben ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren