Всем привет!
Наткнулся тут на ситуацию когда в VC 2005, отвлаивается компилятор при попытке скомпилить следующий код:
class A
{
public:
enum A_E
{
a1,
a2,
a3
};
};
class B
{
public:
typedef A::A_E B_E;
};
int main()
{
return B::B_E::a1;
}
Результат компиляции:
d:\projects\test1\test1\test1.cpp(22) : fatal error C1001: An internal error has occurred in the compiler.
(compiler file 'msc1.cpp', line 1393)
To work around this problem, try simplifying or changing the program near the locations listed above.
Please choose the Technical Support command on the Visual C++
интересно наблюдается ли подобная проблема в других версиюях студии, может она у меня кривая просто? И в других компиляторах. Известно ли microsoft об этой ошибке?
Здравствуйте, Phoenics, Вы писали:
P>Здравствуйте, quodum, Вы писали:
Q>>Какая проблема? Диагностику нормальную не показывает? Код-то неверный.
P>Проблема выглядит не только как сообщение в окне вывода, но и как исключение ms-ного компилятора с предложением отправить крэшдамп майкософт. Хорошие программы себя так не ведут
MS-овский компилятор вообще славится таким поведением. Особенно он не любит шаблоны )
Здравствуйте, Phoenics, Вы писали:
P>...
Понятно, такому поведению компилятора нет оправдания. Что же касается приведенного примера, можно сделать перечисление анонимным, обернуть его в структуру, которой присвоить отобранное у перечисления имя. Таким образом можно эмулировать пространства имен у перечислений:
class A
{
public:
struct A_E
{
enum
{
a1,
a2,
a3
};
};
};
class B
{
public:
typedef A::A_E B_E;
};
int main()
{
return B::B_E::a1;
}
Если мне не изменяет память, что-то подобное когда-то предлагал
remark.
Здравствуйте, Phoenics, Вы писали:
P>P>class A
P>{
P>public:
P> enum A_E
P> {
P> a1,
P> a2,
P> a3
P> };
P>};
P>class B
P>{
P>public:
P> typedef A::A_E B_E;
P>};
P>int main()
P>{
P> return B::B_E::a1;
P>}
P>
P>интересно наблюдается ли подобная проблема в других версиюях студии, может она у меня кривая просто? И в других компиляторах. Известно ли microsoft об этой ошибке?
компилятор gcc
здесьАвтор: kvser
Дата: 13.08.08
так и плюнул на это дело
Здравствуйте, Phoenics, Вы писали:
[]
P>интересно наблюдается ли подобная проблема в других версиюях студии, может она у меня кривая просто? И в других компиляторах. Известно ли microsoft об этой ошибке?
Какая проблема? Диагностику нормальную не показывает? Код-то неверный.
Правильно так:
int main()
{
return B::a1;
}
Здравствуйте, Phoenics, Вы писали:
P>Всем привет!
P>Наткнулся тут на ситуацию когда в VC 2005, отвлаивается компилятор при попытке скомпилить следующий код:
P>...
P>интересно наблюдается ли подобная проблема в других версиюях студии, может она у меня кривая просто? И в других компиляторах. Известно ли microsoft об этой ошибке?
VC 2008 с недавно вышедшим SP1 — тот же результат
Здравствуйте, quodum, Вы писали:
Q>Какая проблема? Диагностику нормальную не показывает? Код-то неверный.
Проблема выглядит не только как сообщение в окне вывода, но и как исключение ms-ного компилятора с предложением отправить крэшдамп майкософт. Хорошие программы себя так не ведут