opeq10.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 83 行
C
83 行
#include "fail.h"
#if __WATCOM_REVISION__ >= 8
#pragma inline_depth(0)
typedef unsigned char UBYTE;
struct B {
B& operator= (B& c);
};
struct D : public B {
UBYTE aByte;
UBYTE flag1:1;
UBYTE flag2:1;
};
struct S {
int d;
D m1;
D m2;
int e;
};
void test1( int f1, int f2 ) {
S x;
memset( &x, -3, sizeof( x ) );
x.e = -1;
x.d = -1;
x.m1 = x.m2;
x.m2 = x.m1;
x.m1.aByte = 0;
x.m1.flag1 = f1;
x.m1.flag2 = f2;
x.m2 = x.m1;
if( x.d != -1 ) _fail;
if( x.e != -1 ) _fail;
if( x.m1.flag1 != f1 ) _fail;
if( x.m1.flag2 != f2 ) _fail;
if( x.m2.flag1 != f1 ) _fail;
if( x.m2.flag2 != f2 ) _fail;
}
void test2( int f1, int f2 ) {
S x;
memset( &x, -3, sizeof( x ) );
x.e = -1;
x.d = -1;
x.m1 = x.m2;
x.m2 = x.m1;
x.m2.aByte = 0;
x.m2.flag1 = f1;
x.m2.flag2 = f2;
x.m1 = x.m2;
if( x.d != -1 ) _fail;
if( x.e != -1 ) _fail;
if( x.m1.flag1 != f1 ) _fail;
if( x.m1.flag2 != f2 ) _fail;
if( x.m2.flag1 != f1 ) _fail;
if( x.m2.flag2 != f2 ) _fail;
}
int main()
{
test1( 0, 0 );
test1( 0, 1 );
test1( 1, 0 );
test1( 1, 1 );
test2( 0, 0 );
test2( 0, 1 );
test2( 1, 0 );
test2( 1, 1 );
_PASS;
}
B& B::operator= (B& c){
return c;
}
#else
ALWAYS_PASS
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?