Ich bekomme einen Fehler bezüglich Enum (denke ich)

8

Ich teste Code auf einem Solaris-Computer über SSH Secure Shell mit c ++ remote. Nicht sicher, welche Version etwas ist; Solaris, der C ++ / Compiler, usw. (und wissen nicht, wie man durch SSH Secure Shell herausfinden) ...

Dieser Code:

%Vor%

kompiliert und funktioniert gut ... wie Sie sehen können, konvertiert es eine vom Benutzer eingegebene Zeichenfolge in ein int ...

Aber wenn so geändert:

%Vor%

Ich bekomme folgende Kompilierfehler:

%Vor%

Ich habe nach Rechtschreibfehlern gesucht, habe versucht, den Ort der Enum-Linie zu verschieben ... Ich weiß nicht, was in der Welt vor sich geht.

Jede Hilfe mit diesem Problem würde sehr geschätzt werden!

    
Aaron Chauvin 09.06.2011, 07:19
quelle

4 Antworten

23

Das Einbeziehen von cmath definiert die Präprozessorkonstanten OVERFLOW als 3 und UNDERFLOW als 4. Die Zeile, die die Enumeration deklariert, wird dann (falls keine anderen Konstanten vorhanden sind):

%Vor%

was natürlich keine gültige Syntax ist.

    
vhallac 09.06.2011, 07:27
quelle
3

Ich denke, es ist die folgende Zeile:

%Vor%

... sollte eher wie folgt aussehen:

%Vor%

Bearbeiten

Ich habe es gerade auf meinem Rechner kompiliert und es ist deine OVERFLOW Definition ... # define's sind böse!

Versuchen Sie Folgendes:

%Vor%     
Jon Cage 09.06.2011 07:24
quelle
0

Ich nehme an, dass entweder <limits> oder <cmath> für einen oder mehrere von SUCCESS , OVERFLOW , UNDERFLOW , INCONVERTIBLE definiert hat, was dazu führt, dass Ihre enum-Bezeichner in "numerische Konstanten" umgewandelt werden ", was wiederum zu den Fehlern führen würde, die Sie sehen.

Sie sehen sie nicht in der ersten Version, weil Sie diese Header nicht eingeschlossen haben.

Einfache Überprüfung: Versuchen Sie, die Enum-IDs umzubenennen.

    
Peter Alexander 09.06.2011 07:28
quelle
0
%Vor%

Vielleicht wurde einer der Enumeratoren wie SUCCESS bereits vorher definiert. Versuchen Sie es mit SUCCESS_TEST oder etwas, um dies zu überprüfen.

Bearbeiten

Eine andere Möglichkeit, dies zu überprüfen, besteht darin, den Code mit der Option -E zu kompilieren, dies zeigt die Ausgabe des Präprozessors. Zum Beispiel: gcc -E main.cpp

    
StackedCrooked 09.06.2011 07:30
quelle

Tags und Links