int max (int a,int b) gibt Fehlermeldung vom compiler aus???
-
Hallo,
warum bekomme ich, wenn ich mir die Funktion
int max (int a,int b)
definiere, die Fehlermeldung: error C2059: Syntaxfehler: 'Typ'
Wobei die Funktion
int maximum (int a,int b)
ohne Fehlermeldung funktioniert?
-
Da hat wohl jemand in einem der verwendeten Header bereits ein Makro max() definiert, das jetzt auf deine Fuktionsdeklaration angewendet wird (sowas kommt öfter vor).
-
Ach so. Dann wäre es ja schön wenn der compiler sagt. Funktion ... is defined by header ... oder so. Hmm na ja muss man alles erst wissen.
-
Der Compiler sieht davon ja nichts, wenn das Makro durch den Präprozessor bereits aufgelöst wurde. Das sieht meistens etwa so aus:
#define max(x,y) ((x)>(y)?(x):(y))
Dem Präprozessor ist die C-Syntax wiederum egal, der ersetzt blind alles was er findet. Dadurch macht er aus deiner Funktionsdefinition dann so etwas:
int ((int a)>(int b)?(int a):(int b))
Und damit kann dann der Compiler nichts anfangen und liefert eine entsprechend verwirrende Fehlermeldung.