Seite 1 von 1

frage zu makro

Verfasst: Do 17. Feb 2011, 19:10
von beafraid88
hey leute,
lernen ist grad auf hochtouren :P

hier eine aufgabe :

Definieren Sie ein Makro namens is neg, das eine Zahl als Argument erhält und
1 zurückgibt, falls die Zahl negativ ist und ansonsten 0 zurückgibt.

heisst es:

#define is_neg(int z) (z<0) ? 1 : 0
oder
#define is_neg(z) (z<0) ? 1 : 0

Re: frage zu makro

Verfasst: Do 17. Feb 2011, 19:14
von bob10
Tipp doch mal beides in eine .c Datei und kompilier es.
Bei einem von beiden wird der Compiler sich beschweren.

Tipp: Makros sind keine Funktionen!

Re: frage zu makro

Verfasst: Do 17. Feb 2011, 21:12
von Bong91
#define is_neg(z) (z<0) ? 1 : 0

das funktioniert auf jedenfall. ob (int z) da beim makro funktioniert, keine ahnung

Re: frage zu makro

Verfasst: Fr 18. Feb 2011, 08:51
von bob10
Bong91 hat geschrieben:ob (int z) da beim makro funktioniert, keine ahnung
Das funktioniert nicht, da die Makros vom Präprozessor abgehandelt werden (also keine Funktion sind, die einen Datentyp für ihre Parameter/Rückgabewerte benötigt) und der keine Ahnung von int, char, double, etc. hat.
Der setzt einfach an jeder Stelle wo im Quellcode "is_neg(z)" steht "(z<0) ? 1 : 0" ein, egal welchen Datentyp "z" hat.