except32.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 49 行
C
49 行
#include "fail.h"
#include <string.h>
struct B {
int b[8];
B();
B( B const & );
};
B::B() {
for( int i = 0; i < 8; ++i ) {
b[i] = i+0xb00;
}
}
B::B( B const &s ) {
memcpy( b, s.b, sizeof( b ) );
}
struct D : B {
int d[16];
D();
D( D const & );
};
D::D() {
for( int i = 0; i < 16; ++i ) {
d[i] = i+0xd00;
}
}
D::D( D const &s ) : B(s) {
memcpy( d, s.d, sizeof( d ) );
b[0] ='d';
}
D x;
void foo() {
throw x;
}
int main() {
try {
foo();
} catch( B x ) {
if( x.b[0] != 'd' ) fail(__LINE__);
for( int i = 1; i < 8; ++i ) {
if( x.b[i] != i+0xb00 ) fail(__LINE__);
}
}
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?