ctor01.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 52 行

C
52
字号
#include "fail.h"

// 96/04/12 -- J.W.Welch    -- cast to references now should fail

int error_occurred;

struct V {
    V();
};
V::V() {
}
struct D : virtual V {
    D(int);
};
D::D( int x ) {
    if( x != 0xaaaa ) {
        fail(__LINE__);
        ++error_occurred;
    }
}

int zap_parm_regs( int a, int b, int c, int d )
{
    return a + b + c + d;
}

void foo( D const &, unsigned line )
{
    if( error_occurred ) {
        fail(line);
        error_occurred = 0;
    }
}

int main()
{
    zap_parm_regs( -1, -2, -3, -4 );
#if __WATCOM_REVISION__ < 8
    foo( (D&)0xaaaa, __LINE__ );
    zap_parm_regs( -1, -2, -3, -4 );
#endif
    foo( (D)0xaaaa, __LINE__);
    zap_parm_regs( -1, -2, -3, -4 );
    foo( (D)0xaaaa, __LINE__);
    zap_parm_regs( -1, -2, -3, -4 );
#if __WATCOM_REVISION__ < 8
    foo( (D&)0xaaaa, __LINE__);
    zap_parm_regs( -1, -2, -3, -4 );
#endif
    _PASS;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?