I want to make an array of struct, the problem is when to each single struct has different size of array. I tried to make an pointer to the array, but i dont get the point.
typedef struct {
char *opcodeName;
int opcodeNumber;
int howManyOprendsNeeded;
int *sourceAddressingMode;
int *destAddressingMode;
}Opcode;
typedef enum {
IMMEDIATE, DIRECT, INDEX, REGISTER
}ADDRESSING_MODE;
static const Opcode opcodes[] = {
{"mov", 0, 2, {IMMEDIATE ,DIRECT , INDEX , REGISTER},{DIRECT , INDEX , REGISTER} },
{"cmp" ,1, 2, {IMMEDIATE ,DIRECT , INDEX , REGISTER}, {IMMEDIATE ,DIRECT , INDEX , REGISTER}},
{"add" ,2, 2, {IMMEDIATE ,DIRECT , INDEX , REGISTER},{DIRECT , INDEX , REGISTER } },
{"sub" ,3, 2, {IMMEDIATE ,DIRECT , INDEX , REGISTER},{ DIRECT , INDEX , REGISTER} },
{"not" ,4, 1, {-1} , {DIRECT , INDEX , REGISTER} },
{"clr" ,5, 1, {-1} , {DIRECT , INDEX , REGISTER} },
{"lea" ,6, 2, {DIRECT,INDEX} , {DIRECT , INDEX , REGISTER} },
{"inc" ,7, 1, {-1} , {DIRECT , INDEX , REGISTER} },
{"dec" ,8, 1, {-1} , {DIRECT , INDEX , REGISTER} },
{"jmp" ,9, 1, {-1} , {DIRECT ,REGISTER} },
{"bne" ,10, 1,{-1} , {DIRECT , REGISTER} },
{"red" ,11, 1,{-1} , {DIRECT , INDEX , REGISTER} },
{"prn" ,12, 1,{-1} , {IMMEDIATE ,DIRECT , INDEX , REGISTER} },
{"jsr" ,13, 1,{-1} , {DIRECT , REGISTER} },
{"rts" ,14, 0,{-1} , {-1}},
{"stop",15, 0,{-1} , {-1}},
};
How can i declare the array from the strcut, If i dont know how much the size is. The errors i got : 1.initialization of 'int *' from 'int' makes pointer from integer without a cast [-Wint-conversion] causing by {IMMEDIATE ,DIRECT , INDEX , REGISTER}. 2.excess elements in scalar initializer. causing by {-1}.
(int[]){ ... }), but then this initialization must be at file-scope or else the array will end its life when the block it's defined in ends. - Some programmer dudesourceAddressingModeanddestAddressingModebe arrays of a fixed maximum size. Then use as much of them as needed. They are not arrays currently, but pointers, which doesn't make sense given this initializer list you've provided. - Lundin