LINUX.ORG.RU

catch(...)


0

0

По моему я как то торможу...
Фрагмент:
---------
#include <stdio.h>

int main(int argc, char **argv)
{
try
{
throw "Exception";
}

catch(...)
{
printf("ok\n");
}

return 0;
}

----------
скомпилированный g++ 3.3.2 и запущенный выдает:
Aborted, т.е catch(...) не отрабатывает.
Естественно, любыми другими компиляторами
(имеющимися у меня в наличии gcc 2.96, 3.2, bcb)
выдает "ok".

Вопрос:
может как то поменялись стандарты (а я не уследил)
или нужно давать какие то опции при компиляции...
(Опции оптимизации -O никак не влияют.)

PS: Может просто кривая сборка (имидж с uclibs):
Reading specs from /usr/lib/gcc-lib/i386-linux/3.3.2/specs Configured with: ./configure --verbose --target=i386-linux --host=i386-linux --build=i686-pc-linux-gnu --prefix=/usr --mandir=/usr/man --infodir=/usr/info --with-gxx-include-dir=/usr/include/c++/3.3 --enable-target-optspace --enable-shared --enable-multilib --disable-nls --with-gnu-ld --disable-__cxa_atexit --enable-languages=c,c++
Thread model: posix
gcc version 3.3.2


Похоже это всетаки баг самого gcc 3.3.2 т.к. с опцией -static все работает Ok. Кстати, а что дает опция static: статически прилинковывает все библиотеки (libc, libstdc++, libm) ?

OlegY
() автор топика

Проверил на gcc 3.3.1, все работает.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.