dtor21.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 58 行
C
58 行
#include "fail.h"
int ctors;
struct CD {
CD(int sig) : sig(sig) {
++ctors;
}
~CD() {
--ctors;
if( ctors < 0 ) fail(__LINE__);
}
int sig;
};
int check;
void use( int sig )
{
if( sig != check ) fail(__LINE__);
++check;
}
void foo( int b )
{
check = 1;
CD const & v1 = CD(1);
use( v1.sig );
if( b ) {
CD const & v2 = CD(2);
use( v2.sig );
if( b > 3 ) {
CD const & v3 = CD(3);
use( v3.sig );
}
}
}
int main()
{
foo( 0 );
if( ctors != 0 ) fail(__LINE__);
ctors = 0;
foo( 1 );
if( ctors != 0 ) fail(__LINE__);
ctors = 0;
foo( 2 );
if( ctors != 0 ) fail(__LINE__);
ctors = 0;
foo( 3 );
if( ctors != 0 ) fail(__LINE__);
ctors = 0;
foo( 4 );
if( ctors != 0 ) fail(__LINE__);
ctors = 0;
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?