C ++ Switch не будет компилироваться с внешне определенной переменной, используемой как регистр

Я пишу на C ++ с использованием компилятора MinGW GNU, и проблема возникает, когда я пытаюсь использовать внешнюю целочисленную переменную в качестве регистра в выражении switch. Я получаю следующую ошибку компилятора: "метка регистра не сводится к целочисленной константе».

Поскольку я определил целочисленную переменную как extern, я считаю, что она должна компилироваться, кто-нибудь знает, в чем может быть проблема?

Ниже приведен пример:

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;

Этот код будет правильно компилироваться в Visual C ++ 2008. Более того, мой друг из Монтанана проверил стандарт ISO C ++, и оказалось, что любое выражение const-integer должно работать. Возможно, это ошибка компилятора или я пропустил что-то очевидное?

Вот информация о версии моего компилятора:

Чтение спецификаций из C: / MinGW / bin /../ lib / gcc / mingw32 / 3.4.5 / specs
Настраивается с помощью: ../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-исключения - enable-libgcj --disable-java-awt --without-x --enable-java-gc = boehm --disable-libgcj-debug --enable-интерпретатор --enable-hash-synchronization --enable-libstdcxx-debug
Модель потока: win32
gcc версия 3.4.5 (mingw-vista special r3)

Ответы на вопрос(8)

Ваш ответ на вопрос