init17.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 70 行
C
70 行
#include "fail.h"
#pragma pack(8);
struct X1 {
short a[3];
char *b;
};
struct X1 v1[] = {
1,2,3, "4",
{.b = "8", .a = {5,6,7}},
{.a = 9,10,11, .b = "12"},
{.a = {13,14,15}, "16"},
};
void check_X1( struct X1 *p, int b, unsigned line ) {
if( p->a[0] != b++ ) fail(line);
if( p->a[1] != b++ ) fail(line);
if( p->a[2] != b++ ) fail(line);
if( atol( p->b ) != b ) fail(line);
}
struct X2 {
char a[2];
long b;
char c[3];
};
void check_X2( struct X2 *p ) {
int b = 1;
if( p->a[0] != b++ ) fail(__LINE__);
if( p->a[1] != b++ ) fail(__LINE__);
if( p->b != b++ ) fail(__LINE__);
if( p->c[0] != b ) fail(__LINE__);
if( p->c[1] != 0 ) fail(__LINE__);
if( p->c[2] != 0 ) fail(__LINE__);
}
void test() {
struct X2 v = { .b = 0, .a = {1, 2}, 3, .c = {4}, .b = 3 };
check_X2( &v );
check_X2( &v );
}
union X3 {
char a;
long b;
};
union X3 v2[2] = { {.b=1}, {.a=-1} };
void check_X3( void ) {
if( v2[0].a != 1 ) fail(__LINE__);
v2[0].a = 0;
if( v2[0].b != 0 ) fail(__LINE__);
if( v2[1].a != (char)-1 ) fail(__LINE__);
v2[1].a = 0;
if( v2[1].b != 0 ) fail(__LINE__);
}
int main() {
test();
check_X1( &v1[0], 1, __LINE__ );
check_X1( &v1[1], 5, __LINE__ );
check_X1( &v1[2], 9, __LINE__ );
check_X1( &v1[3], 13, __LINE__ );
check_X3();
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?