Un problème d'initialisation avec malloc en C

Résolu/Fermé
débutant en c - 1 juin 2008 à 12:59
 débutant en c - 1 juin 2008 à 15:17
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 vendredi 12 janvier 2007 Statut Membre Dernière intervention 11 mai 2009 44
1 juin 2008 à 13:50
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
1 juin 2008 à 14:45
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