проверяемый-блок: try составной-оператор список-обработчиков список-обработчиков: обработчик список-обработчиков opt обработчик: catch (описание-особой-ситуации) составной-оператор описание-особой-ситуации: список-спецификаций-типа описатель список-спецификаций-типа абстрактный-описатель список-спецификаций-типа... выражение-запуска: throw выражение opt спецификация-особой-ситуации: throw (список-типа opt) список-типа: имя-типа список-типа, имя-типа
R.18 Приложение B: Совместимость
Это приложение не относится к справочному руководству С++ и неявляется определением конструкций языка. Язык С++ основывается на С (описание в книге Кернигана и Ритчи,78 г., дальше K&R) и включает большинство изменений, предложенныхв ANSI стандарте для С. При конвертировании программ на языкахС++, K&R C и ANSI C могут возникнуть трудности в связи с различнымвычислением в них выражений. Транслятор должен распознавать все различиямежду С++ и ANSI C. Программы на С++ и ANSI C должны иметь одинаковыйсмысл за исключением трех следующих случаев: В языке С выражение sizeof('a') равно sizeof(int), а в С++оно равно sizeof(char). Если есть описание enum e { A }; то sizeof(A) равно в С sizeof(int), тогда как в С++ оно равно sizeof(e)и не обязано быть равно sizeof(int). Имя структуры, описанной во внутреннем блоке, может скрывать имяобъекта, функции, элемента перечисления или типа из внешнего блока.Приведем пример: int x[99]; void f() { struct x { int a; }; sizeof(x); /* для C это размер массива */ /* а для C++ размер структуры */ }