| extern void abort(void); |
| |
| typedef struct myCDerived |
| { |
| int cInt; |
| double cDouble; |
| float cFloat; |
| short cShort; |
| void *ptr; |
| }myCDerived_t; |
| |
| #define DERIVED_ARRAY_LEN 10 |
| #define ARRAY_LEN_2 3 |
| #define DIM1 2 |
| #define DIM2 3 |
| |
| void testDerivedPtrs(myCDerived_t *cDerivedPtr, |
| myCDerived_t *derivedArray, int arrayLen, |
| myCDerived_t *derived2d, int dim1, int dim2); |
| |
| int main(int argc, char **argv) |
| { |
| myCDerived_t cDerived; |
| myCDerived_t derivedArray[DERIVED_ARRAY_LEN]; |
| myCDerived_t derived2DArray[DIM1][DIM2]; |
| int i = 0; |
| int j = 0; |
| |
| cDerived.cInt = 1; |
| cDerived.cDouble = 2.0; |
| cDerived.cFloat = 3.0; |
| cDerived.cShort = 4; |
| /* cDerived.ptr = NULL; */ |
| /* nullify the ptr */ |
| cDerived.ptr = 0; |
| |
| for(i = 0; i < DERIVED_ARRAY_LEN; i++) |
| { |
| derivedArray[i].cInt = (i+1) * 1; |
| derivedArray[i].cDouble = (i+1) * 1.0; /* 2.0; */ |
| derivedArray[i].cFloat = (i+1) * 1.0; /* 3.0; */ |
| derivedArray[i].cShort = (i+1) * 1; /* 4; */ |
| /* derivedArray[i].ptr = NULL; */ |
| derivedArray[i].ptr = 0; |
| } |
| |
| for(i = 0; i < DIM1; i++) |
| { |
| for(j = 0; j < DIM2; j++) |
| { |
| derived2DArray[i][j].cInt = ((i*DIM1) * 1) + j; |
| derived2DArray[i][j].cDouble = ((i*DIM1) * 1.0) + j; |
| derived2DArray[i][j].cFloat = ((i*DIM1) * 1.0) + j; |
| derived2DArray[i][j].cShort = ((i*DIM1) * 1) + j; |
| /* derived2DArray[i][j].ptr = NULL; */ |
| derived2DArray[i][j].ptr = 0; |
| } |
| } |
| |
| /* send in the transpose size (dim2 is dim1, dim1 is dim2) */ |
| testDerivedPtrs(&cDerived, derivedArray, DERIVED_ARRAY_LEN, |
| derived2DArray[0], DIM2, DIM1); |
| |
| return 0; |
| }/* end main() */ |
| |