Un problème d'initialisation avec malloc en C
Résolu
débutant en c
-
débutant en c -
débutant en c -
Bonjour,
je déclare une première structure:
typedef struct _optype {
int size ;
ModeAdressage mod ;
union {
long imm ;
RegCode reg ;
unsigned long mem ;
RegCode ireg ;
struct { long dep ; RegCode reg ; } indir ;
long rel ;
struct _optype *etoil ;
} val ;
} Operande ;
et puis un autre:
typedef struct {
InstName name ;
int size ; /* taille: 0, 1, 2 ou 4 */
CCName cc ; /* utilise que pour INST_JCC */
int num_op ; /* nombre d'operandes: 0, 1 ou 2 */
Operande op[2] ;
} Inst ;
Je veux mnt déclarer un tableau op de deux cases qui pointe sur des opérandes lorsque j'écris ceci:
Operande op[2]=malloc(2*sizeof(struct _optype));
j'ai une erreur: "invalid initializer"
Comment puis-je initialiser mon tableau?
Merci!
je déclare une première structure:
typedef struct _optype {
int size ;
ModeAdressage mod ;
union {
long imm ;
RegCode reg ;
unsigned long mem ;
RegCode ireg ;
struct { long dep ; RegCode reg ; } indir ;
long rel ;
struct _optype *etoil ;
} val ;
} Operande ;
et puis un autre:
typedef struct {
InstName name ;
int size ; /* taille: 0, 1, 2 ou 4 */
CCName cc ; /* utilise que pour INST_JCC */
int num_op ; /* nombre d'operandes: 0, 1 ou 2 */
Operande op[2] ;
} Inst ;
Je veux mnt déclarer un tableau op de deux cases qui pointe sur des opérandes lorsque j'écris ceci:
Operande op[2]=malloc(2*sizeof(struct _optype));
j'ai une erreur: "invalid initializer"
Comment puis-je initialiser mon tableau?
Merci!
A voir également:
- Malloc invalid initializer
- Smartone iptv playlist invalid - Forum Box et Streaming vidéo
- The input value is invalid. - Forum Javascript
- Invalid plugin detected. adobe acrobat reader will quit - Forum Programmation
- Invalid details iptv smarters ✓ - Forum Facebook
- Problème iptv smarters ✓ - Forum Box et Streaming vidéo
2 réponses
je pense que ceci est plus convenable :
Operande *op=malloc(2*sizeof(struct _optype));
ensuite pour plus de clarté je te conseille de definir toute tes structures séparément (ne pas les définir dans d'autre structure), ainsi ton code sera plus lisible car là, ...
essaie voir mais peut etre faudra-t-il initialiser certains champs de tes structures avec des malloc...
bon courage.
tchû
Operande *op=malloc(2*sizeof(struct _optype));
ensuite pour plus de clarté je te conseille de definir toute tes structures séparément (ne pas les définir dans d'autre structure), ainsi ton code sera plus lisible car là, ...
essaie voir mais peut etre faudra-t-il initialiser certains champs de tes structures avec des malloc...
bon courage.
tchû
J'ai résout le problème avec :
struct _optype * op= malloc(2*sizeof(struct _optype));
mais mnt g un autre problème d'initialisation avec les mm structures:
je veux déclarer un élément de type Inst et je le nomme instruction, comment faire?
j'ai essayé: Inst instruction=malloc(sizeof(Inst)); => error: variable `instruction' has initializer but incomplete type
error: invalid application of `sizeof' to incomplete type `Inst'
error: storage size of 'instruction' isn't known
En nomant _instr la structure Inst, j'ai essayé aussi: struct _instr instruction=malloc(sizeof(struct _instr)); => error: invalid initializer