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.


Anmelden zum Antworten