error C2059: Syntaxfehler : 'Konstante'

Ich habe ein Stück code, der automatisch generiert, kompiliert unter Linux aber nicht unter Windows mit Visual Studio 2008 Express. Das Problem das ich habe ist, dass ich nicht verstehe, die compiler-Fehler. Ich glaube nicht, dass ich nach den genauen code, so ist hier eine bereinigte version davon...

Fehler für die Zeile der Deklaration das static const LÖSCHEN. Hinweis: Der compiler-Fehlermeldung nicht erscheint, wenn diese Datei kompiliert wird - es wird in einer Bibliothek erfolgreich, sondern zeigt sich in einem zweiten Projekt mit der header (indirekt). Ich glaube, es gibt mindestens ein oder zwei andere Projekte, die Sie indirekt in die Lösung - Sie haben keine Probleme kompilieren.

File_A.h:

enum LONG_TYPE_NAME {
  ENUM_NAME_PREFIX_ADD = 0,
  ENUM_NAME_PREFIX_CHANGE = 1,
  ENUM_NAME_PREFIX_DELETE = 2,
  ENUM_NAME_PREFIX_SOMETHINGELSE = 3,
};
//Lots of code here
class FOO : public ::LIBRARY_NAME {
 public:
  //Some stuff
  private:
  //Some stuff
  public:
  //Some more stuff

  typedef LONG_TYPE_NAME SHORT_NAME;
  static const SHORT_NAME ADD = ENUM_NAME_PREFIX_ADD;
  static const SHORT_NAME CHANGE = ENUM_NAME_PREFIX_CHANGE; 

  /* compiler error for the following line only*/
  static const SHORT_NAME DELETE = ENUM_NAME_PREFIX_DELETE; 
  static const SHORT_NAME SOMETHINGELSE = ENUM_NAME_PREFIX_SOMETHINGELSE; 

  //More stuff
};

Die Konstante selbst wird nur an einer Stelle (wenn ich die Suche über das Projekt für den Begriff LÖSCHEN):

File_A.cc:

#ifndef _MSC_VER
const LONG_TYPE_NAME FOO::ADD;
const LONG_TYPE_NAME FOO::CHANGE;
const LONG_TYPE_NAME FOO::DELETE;
//More stuff
#endif  //_MSC_VER

Den Fehler gemeldet error C2059: syntax error : 'constant' (gefolgt von error C2258: illegal pure syntax, must be '= 0' und error C4430: missing type specifier - int assumed. Note: C++ does not support default-int was ich davon ausgehen sind nicht relevant), aber nicht, wenn die oben genannten Dateien kompiliert werden.

Die Dateien kompiliert werden, um eine Bibliothek, die statisch verknüpft ist, durch ein anderes Projekt (C++) - dies ist die eine, die den Fehler generiert (sowie in einem zweiten .cpp-Datei, die etwas ähnliches macht). Es zeigt immer noch, wenn ich kommentieren Sie den code, ich vermute, es hat etwas zu tun mit header Einschlüsse.

Auskommentieren der Zeile, die den Fehler generiert, macht der build auf Windows (und nicht auf Linux, aber ich gehe davon aus, dass das auskommentieren der sein Pendant in der ifndef sollte das beheben, dass), aber ich möchte wirklich wissen, warum der compiler fehlschlägt, für die jeweilige Linie und was der Fehler eigentlich bedeutet. Auch, es ist wahrscheinlich besser, nicht zu ändern-code, der automatisch generiert werden.

EDIT: Aufspaltung der Termini in einzelne Linien macht der compiler zeigen Sie auf die Zeile LÖSCHEN. Gibt es vielleicht ein makro automatisch definierten Namen LÖSCHEN irgendwo?

EDIT 2: räumten die überschrift Abschnitt ein bisschen aufzuräumen, einige mögliche Missverständnisse.
Übrigens die Umbenennung der variable LÖSCHEN, löscht auch den Fehler.

EDIT 3: Klar ich muss lernen, mehr über VS - /P erzeugt die vorverarbeitete Datei, ohne dass die Objekt-Datei, so wird der build natürlich scheitern, ohne dass Kompilierungsfehler. Auch, es sieht aus wie es ist ein makro irgendwo definiert LÖSCHEN als (0x00010000L).

Suchen Sie in der Datei vorverarbeitet. Vielleicht ist einer der "system" - Header definiert DELETE oder etwas dummes wie, die.
Sie können es durch hinzufügen #undef LÖSCHEN
Oder vielleicht versuchen, umbenennen, LÖSCHEN.
Es gibt auf jeden Fall ein makro DELETE irgendwo definiert.

InformationsquelleAutor Nan L | 2012-05-09

Schreibe einen Kommentar