idata22.cpp

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

CPP
68
字号
#include "dump.h"
#include <stdio.h>
class A {
    public:
	char a;
    A();
    A( int );
};
static A *pp = 0;
A::A()
{
    a = 'a';
    if( pp == 0 ) {
	printf( "CTOR1\n" );
	pp = this;
    } else {
	printf( "CTOR1:%x\n", this - pp );
    }
}
A::A( int i )
{
    a = (char)i;
    if( pp == 0 ) {
	printf( "CTOR2\n" );
	pp = this;
    } else {
	printf( "CTOR2:%x\n", this - pp );
    }
}

#define INNER   2
#define OUTER_1 3
#define OUTER_2 5

void dump( char *name, A a[][INNER], int limit )
{
    for( int i = 0 ; i < limit ; i++ ) {
	for( int j = 0 ; j < INNER ; j++ ) {
	    printf( "%s[%d,%d] = %d\n", name, i, j, a[i][j].a );
	}
    }
}

int main( void )
{
    {
	int something = __LINE__;
	DUMP( something );
    }
    static A a;
    pp = 0;
    static A b[OUTER_1][INNER];
    pp = 0;
    static A c[OUTER_1][INNER] = { A(1) };
    pp = 0;
    static A d[OUTER_1][INNER] = { { A(1) }, { A(3) } };
    pp = 0;
    static A e[OUTER_2][INNER] = { { A(1) }, { A(3) }, { A(5) } };
    pp = 0;
    printf( "a: %d\n", a.a );
    dump( "b", b, OUTER_1 );
    dump( "c", c, OUTER_1 );
    dump( "d", d, OUTER_1 );
    dump( "e", e, OUTER_2 );
    return 0;
}

⌨️ 快捷键说明

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