Microsoft Visual C++ 6.0 - Keine Rekursion?

  • C++

  • bloodycross
  • 1464 Aufrufe 4 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Microsoft Visual C++ 6.0 - Keine Rekursion?

    Ich lerne derzeit C++ mit dem Buch "Einstieg in C++"
    Derzeit bin ich bei Rekursiven Funktionen. Hierzu gibt es ein Beispiel Programm im Buch (Taschenrechner)
    Allerdings gibt der Visual C++ 6.0 Compiler immer zwei Fehler aus:

    Temporäre Dateien und Ausgabedateien für "Rechner - Win32 Debug" werden gelöscht.
    --------------------Konfiguration: Rechner - Win32 Debug--------------------
    Kompilierung läuft...
    Rechner.cpp
    d:\programmieren\c++ neu\taschenrechner\rechner.cpp(70) : error C2065: 'PlusMinus' : nichtdeklarierter Bezeichner
    d:\programmieren\c++ neu\taschenrechner\rechner.cpp(104) : error C2373: 'PlusMinus' : Neudefinition; unterschiedliche Modifizierer
    Fehler beim Ausführen von cl.exe.

    Rechner.exe - 2 Fehler, 0 Warnung(en)


    Liegt das am Compiler oder am Listing?
    Wenn es am Compiler liegt, welcher Compiler ist besser?


    Das Listing:

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. enum tToken
    4. {
    5. PLUS, MINUS, MUL, DIV, LPAR, RPAR, NUMBER, END, ERROR
    6. };
    7. tToken aktToken;
    8. double TokenZahlenWert;
    9. char *srcPos;
    10. tToken sucheToken()
    11. {
    12. aktToken = ERROR;
    13. if(*srcPos==0)
    14. {
    15. aktToken=END;
    16. }
    17. else
    18. {
    19. switch(*srcPos)
    20. {
    21. case '(': aktToken=LPAR; break;
    22. case ')': aktToken=RPAR; break;
    23. case '*': aktToken=MUL; break;
    24. case '/': aktToken=DIV; break;
    25. case '+': aktToken=PLUS; break;
    26. case '-': aktToken=PLUS; break;
    27. }
    28. if(*srcPos>='0' && *srcPos<='9')
    29. {
    30. aktToken=NUMBER;
    31. TokenZahlenWert = 0.0;
    32. }
    33. while(*srcPos>='0' && *srcPos<='9')
    34. {
    35. TokenZahlenWert *= 10;
    36. TokenZahlenWert += *srcPos-'0';
    37. srcPos++;
    38. }
    39. if(aktToken !=NUMBER)
    40. {
    41. srcPos++;
    42. }
    43. }
    44. return aktToken;
    45. }
    46. tToken Error(char *s)
    47. {
    48. cerr << s << endl;
    49. return ERROR;
    50. }
    51. double Klammern()
    52. {
    53. double Wert;
    54. switch(aktToken)
    55. {
    56. case NUMBER:
    57. sucheToken();
    58. return TokenZahlenWert;
    59. case MINUS:
    60. sucheToken();
    61. return -Klammern();
    62. case LPAR:
    63. sucheToken();
    64. Wert = PlusMinus();
    65. if(aktToken != RPAR)
    66. {
    67. return Error(") expected");
    68. }
    69. sucheToken();
    70. return Wert;
    71. case END:
    72. return 1;
    73. }
    74. return Error("primary expected");
    75. }
    76. double MulDiv()
    77. {
    78. double Wert;
    79. Wert = Klammern();
    80. while(aktToken==MUL || aktToken==DIV)
    81. {
    82. if(aktToken==MUL)
    83. {
    84. sucheToken();
    85. Wert *= Klammern();
    86. }
    87. if(aktToken==DIV)
    88. {
    89. sucheToken();
    90. Wert /= Klammern();
    91. }
    92. }
    93. return Wert;
    94. }
    95. double PlusMinus()
    96. {
    97. double Wert;
    98. Wert = MulDiv();
    99. while(aktToken==PLUS || aktToken==MINUS)
    100. {
    101. if(aktToken==PLUS)
    102. {
    103. sucheToken();
    104. Wert += MulDiv();
    105. }
    106. else if(aktToken==MINUS)
    107. {
    108. sucheToken();
    109. Wert -= MulDiv();
    110. }
    111. }
    112. return Wert;
    113. }
    114. double Auswertung(char *s)
    115. {
    116. srcPos = s;
    117. sucheToken();
    118. return PlusMinus();
    119. }
    120. int main(int argc, char* argv[])
    121. {
    122. double Wert = Auswertung(argv[1]);
    123. cout << Wert << endl;
    124. return 0;
    125. }
    Alles anzeigen
  • [C++ Fehler] Unit1.cpp(127): E2015 Mehrdeutigkeit zwischen 'PlusMinus(...)' und 'PlusMinus()'
    [C++ Fehler] Unit1.cpp(70): E2268 Aufruf der undefinierten Funktion 'PlusMinus'

    Hast ein paar fehler im code musste mal überprüfen