bf02.c

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

C
169
字号
#include "fail.h"

typedef unsigned char base;

struct X1 {
    base f0 : 1;
    base f1 : 1;
    base f2 : 1;
    base f3 : 1;
    base f4 : 1;
    base f5 : 1;
    base f6 : 1;
    base f7 : 1;
    int m;
};

struct X1 x1 = { 0, 1, 0, 1, 0, 1, 0, 1, -1 };

void check_X1( struct X1 x1 ) {
    if( x1.f0 != 0 ) fail(__LINE__);
    if( x1.f1 != 1 ) fail(__LINE__);
    if( x1.f2 != 0 ) fail(__LINE__);
    if( x1.f3 != 1 ) fail(__LINE__);
    if( x1.f4 != 0 ) fail(__LINE__);
    if( x1.f5 != 1 ) fail(__LINE__);
    if( x1.f6 != 0 ) fail(__LINE__);
    if( x1.f7 != 1 ) fail(__LINE__);
    if( x1.m != -1 ) fail(__LINE__);
};

struct X2 {
    base f0 : 1;
    base f1 : 1;
    base f2 : 1;
    base f3 : 1;
    base f4 : 1;
    base f5 : 1;
    base f6 : 1;
    base f7 : 1;
    base f8 : 1;
    int m;
};

struct X2 x2 = { 0, 1, 0, 1, 0, 1, 0, 1, 1, -1 };

void check_X2( struct X2 x2 ) {
    if( x2.f0 != 0 ) fail(__LINE__);
    if( x2.f1 != 1 ) fail(__LINE__);
    if( x2.f2 != 0 ) fail(__LINE__);
    if( x2.f3 != 1 ) fail(__LINE__);
    if( x2.f4 != 0 ) fail(__LINE__);
    if( x2.f5 != 1 ) fail(__LINE__);
    if( x2.f6 != 0 ) fail(__LINE__);
    if( x2.f7 != 1 ) fail(__LINE__);
    if( x2.f8 != 1 ) fail(__LINE__);
    if( x2.m != -1 ) fail(__LINE__);
};

struct X3 {
    base f0 : 1;
    base f1 : 1;
    base f2 : 1;
    base f3 : 1;
    unsigned f4 : 1;
    unsigned f5 : 1;
    unsigned f6 : 1;
    unsigned f7 : 1;
    unsigned f8 : 1;
    int m;
};

struct X3 x3 = { 0, 1, 0, 1, 0, 1, 0, 1, 1, -1 };

void check_X3( struct X3 x3 ) {
    if( x3.f0 != 0 ) fail(__LINE__);
    if( x3.f1 != 1 ) fail(__LINE__);
    if( x3.f2 != 0 ) fail(__LINE__);
    if( x3.f3 != 1 ) fail(__LINE__);
    if( x3.f4 != 0 ) fail(__LINE__);
    if( x3.f5 != 1 ) fail(__LINE__);
    if( x3.f6 != 0 ) fail(__LINE__);
    if( x3.f7 != 1 ) fail(__LINE__);
    if( x3.f8 != 1 ) fail(__LINE__);
    if( x3.m != -1 ) fail(__LINE__);
};

struct X4 {
    base f0 : 1;
    base f1 : 1;
    base f2 : 1;
    base f3 : 1;
    int m;
    base f4 : 1;
    base f5 : 1;
    base f6 : 1;
    base f7 : 1;
    int n;
    base f8 : 1;
};

struct X4 x4 = { 0, 1, 0, 1, -1, 0, 1, 0, 1, -1, 1 };

void check_X4( struct X4 x4 ) {
    if( x4.f0 != 0 ) fail(__LINE__);
    if( x4.f1 != 1 ) fail(__LINE__);
    if( x4.f2 != 0 ) fail(__LINE__);
    if( x4.f3 != 1 ) fail(__LINE__);
    if( x4.m != -1 ) fail(__LINE__);
    if( x4.f4 != 0 ) fail(__LINE__);
    if( x4.f5 != 1 ) fail(__LINE__);
    if( x4.f6 != 0 ) fail(__LINE__);
    if( x4.f7 != 1 ) fail(__LINE__);
    if( x4.n != -1 ) fail(__LINE__);
    if( x4.f8 != 1 ) fail(__LINE__);
};

struct X5 {
    base f0 : 1;
    base f1 : 1;
    base f2 : 1;
    base f3 : 1;
    int m;
    base f4 : 1;
    base f5 : 1;
    base f6 : 1;
    base f7 : 1;
    int n;
    base f8 : 1;
    struct X1 x1;
    struct X2 x2;
    struct X3 x3;
    struct X4 x4;
};

struct X5 x5 = { 0, 1, 0, 1, -1, 0, 1, 0, 1, -1, 1,
{ 0, 1, 0, 1, 0, 1, 0, 1, -1 },
{ 0, 1, 0, 1, 0, 1, 0, 1, 1, -1 },
{ 0, 1, 0, 1, 0, 1, 0, 1, 1, -1 },
{ 0, 1, 0, 1, -1, 0, 1, 0, 1, -1, 1 },
};

void check_X5( struct X5 x5 ) {
    if( x5.f0 != 0 ) fail(__LINE__);
    if( x5.f1 != 1 ) fail(__LINE__);
    if( x5.f2 != 0 ) fail(__LINE__);
    if( x5.f3 != 1 ) fail(__LINE__);
    if( x5.m != -1 ) fail(__LINE__);
    if( x5.f4 != 0 ) fail(__LINE__);
    if( x5.f5 != 1 ) fail(__LINE__);
    if( x5.f6 != 0 ) fail(__LINE__);
    if( x5.f7 != 1 ) fail(__LINE__);
    if( x5.n != -1 ) fail(__LINE__);
    if( x5.f8 != 1 ) fail(__LINE__);
    check_X1( x5.x1 );
    check_X2( x5.x2 );
    check_X3( x5.x3 );
    check_X4( x5.x4 );
};

int main()
{
    check_X1( x1 );
    check_X2( x2 );
    check_X3( x3 );
    check_X4( x4 );
    check_X5( x5 );
    _PASS;
}

⌨️ 快捷键说明

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