C ++ Switch kompiliert nicht mit einer extern definierten Variablen, die als Groß- / Kleinschreibung verwendet wird

Ich schreibe C ++ mit dem MinGW GNU-Compiler und das Problem tritt auf, wenn ich versuche, eine extern definierte Ganzzahlvariable als Groß- / Kleinschreibung in einer switch-Anweisung zu verwenden. Ich erhalte den folgenden Compilerfehler: "case label reduziert sich nicht auf eine ganzzahlige Konstante".

Da ich die Ganzzahlvariable als extern definiert habe, glaube ich, dass sie kompiliert werden sollte, weiß jemand, woran das Problem liegen könnte?

Unten ist ein Beispiel:

test.cpp

#include <iostream>
#include "x_def.h"

int main()
{
   std::cout << "Main Entered" << std::endl;


   switch(0)
   {
      case test_int:
         std::cout << "Case X" << std::endl;
         break;
      default:
         std::cout << "Case Default" << std::endl;
         break;
   }

   return 0;
}

x_def.h

extern const int test_int;

x_def.cpp

const int test_int = 0;

Dieser Code wird in Visual C ++ 2008 korrekt kompiliert. Außerdem hat ein Montanan-Freund den ISO C ++ -Standard überprüft, und es scheint, dass jeder const-integer-Ausdruck funktionieren sollte. Handelt es sich möglicherweise um einen Compiler-Fehler, oder habe ich etwas Offensichtliches übersehen?

Hier sind meine Compiler-Versionsinformationen:

Lesen von Spezifikationen aus C: / MinGW / bin /../ lib / gcc / mingw32 / 3.4.5 / specs
Konfiguriert mit: ../gcc-3.4.5-20060117-3/configure --with-gcc --with-gnu-ld --with-gnu-as --host = mingw32 --target = mingw32 --prefix = / mingw --enable-threads --disable-nls --enable-languages ​​= c, c ++, f77, ada, objc, java --disable-win32-registry --disable-shared --enable-sjlj-exceptions - enable-libgcj --disable-java-awt --without-x --enable-java-gc = boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronisation --enable-libstdcxx-debug
Thread-Modell: win32
gcc version 3.4.5 (mingw-vista special r3)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage