Un problème d'initialisation avec malloc en C

Résolu
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!

2 réponses

daronmaster Messages postés 326 Date d'inscription   Statut Membre Dernière intervention   44
 
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û
0
débutant en c
 
Bonjour,

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
0
daronmaster Messages postés 326 Date d'inscription   Statut Membre Dernière intervention   44
 
losrque tu fais des malloc c'est sur des pointeur donc :

Inst *instruction=malloc(sizeof(Inst));

ensuite, initialise les champs de cette structure de la meme maniere pour Operande *op.


voila essaie et reviens dire ce qu'il en est

tchû
0
débutant en c
 
ça marche.

Merci!
0