Przełącznik C ++ nie skompiluje się z zewnętrznie zdefiniowaną zmienną używaną jako case

Piszę C ++ za pomocą kompilatora MinGW GNU, a problem pojawia się, gdy próbuję użyć zdefiniowanej zewnętrznie zmiennej całkowitej jako przypadku w instrukcji switch. Dostaję następujący błąd kompilatora: „etykieta przypadku nie zmniejsza się do stałej liczby całkowitej

Ponieważ zdefiniowałem zmienną całkowitą jako extern, wierzę, że powinna się skompilować, czy ktoś wie, jaki może być problem?

Poniżej znajduje się przykład:

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;

Ten kod zostanie poprawnie skompilowany w Visual C ++ 2008. Ponadto mój przyjaciel z Montanan sprawdził standard ISO C ++ i wygląda na to, że każde wyrażenie typu const-integer powinno działać. Czy to może być błąd kompilatora, czy przegapiłem coś oczywistego?

Oto moje informacje o wersji kompilatora:

Odczyt specyfikacji z C: / MinGW / bin /../ lib / gcc / mingw32 / 3.4.5 / specs
Skonfigurowane przy pomocy: ../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-wyjątki - enable-libgcj --disable-java-awt --without-x --enable-java-gc = boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug
Model wątku: win32
gcc wersja 3.4.5 (mingw-vista special r3)

questionAnswers(3)

yourAnswerToTheQuestion