Warum funktionieren Makros nur manchmal in einer Funktion?



  • Hallo,
    Ich versuche eine Funktion zu erstellen, die etwas mit einem Makto anstellt und einen double als return ausgibt.

    Wenn ich plus oder minus rechne, ist es abolut kein problem.
    Wenn ich jedoch mal rechne, oder Klammern einfüge meckert mein compiler rum und weigert sich zu komplilieren.

    Ich habe mal ein schnelles Beispielprogramm geschrieben um mein Probelm darzulegen:
    https://pastebin.com/cczUwGyu

    Im echten Leben würde ich es nicht mit Makros machen aber wir hatten in der Vorlesung Makros und Funktionen, sodass ich diese üben will.

    Vielen Dank im Vorraus und bleibt gesund!



  • Warum enthalten deine Makros ein ;?

    aber wir hatten in der Vorlesung Makros

    Wenn ihr in einer C++ Vorlesung Makros für Konstanten gelernt habt: YAIT (yet another incompetent teacher)



  • Makros bewirken lediglich Textersetzung, hier wird also z.B. vom Präprozessor wert1 durch 10.00; ersetzt, egal ob das syntaktisch sinnvoll ist oder nicht.



  • Auch bei return wert1 + a; kommt bisher nicht das von dir erwartet Ergebnis heraus:

     return 10.00; + a;
    

    Das ist syntaktisch zwar korrekt, aber der Compiler sollte eine Warnung bzgl. ungenutzten Code + a ausgeben.

    Entferne bei den Makros also das Semikolon am Ende!


  • Mod

    @Th69 sagte in Warum funktionieren Makros nur manchmal in einer Funktion?:

    Entferne bei den Makros also das Semikolon am Ende!

    Nein, nutz' keine Makros! #define-Makros haben sowieso so gut wie nichts in C++ zu suchen, und ganz bestimmt niemals für Konstanten. Siehe auch was manni66 sagte.



  • @V12TDI sagte in Warum funktionieren Makros nur manchmal in einer Funktion?:

    Im echten Leben würde ich es nicht mit Makros machen aber wir hatten in der Vorlesung Makros und Funktionen, sodass ich diese üben will.



  • Ich bedanke mich bei allen für die Hilfe!
    Makros muss ich nutzen, weil wir das in der Klausur auch so machen müssen.


Log in to reply