#include #include #include "dimension.h" int main( void ) { int m = 3; int n = 4; { DIM3( float, d, m, n ); float *pd; int i, j, k; extern void tf( void *f, int k1, int k2, int l ); printf( "%ld %ld\n", sizeof(d), sizeof(*d) ); // n = 5; // printf( "%ld %ld\n", sizeof(d), sizeof(*d) ); // d = (float (*) [n])malloc( 3*sizeof(*d) ); d = (typeof(d))malloc( 2*sizeof(*d) ); for ( i = 0; i < 2; i++ ) for ( j = 0; j < m; j++ ) for ( k = 0; k < n; k++ ) d[i][j][k] = i*100+j*10+k; pd = (float*)d; for ( i = 0; i < (m*n); i++ ) printf( " %f", pd[i] ); printf( "\n" ); for ( i = (m*n); i < (2*m*n); i++ ) printf( " %f", pd[i] ); printf( "\n" ); tf( d, m, n, 2 ); } return 0; } void tf( void *vf, int k1, int k2, int l ) { DIM3( float, f, k1, k2 ) = (typeof(f)) vf; int i, j, k; /***/ for ( i = 0; i < l; i++ ) { for ( j = 0; j < k1; j++ ) { for ( k = 0; k < k2; k++ ) printf( " %f", f[i][j][k] ); printf( "\n" ); } printf( "\n\n" ); } }