Caster une structure 32 bits en (void*)
Bonjours,
J'ai une structure composé de 4 champs de 8 octets
Code:
1 2 3 4 5 6 7
|
typedef struct {
char a;
char b;
char c;
char d;
} MaStruct |
Je travail sur un système 32 bits, et j'utilise une fonction qui prend comme paramêtre un (void*). J'aimerai lui passer ma structure, mais directement sa valeur, et non son adresse.
Malheureusement, le compilateur n'accêpte pas cela. Comment puis-je lui "dire" que ma structure fait 32 bits et que cela ne donc aucun problème?
en gros, pouvoir faire :
Code:
1 2 3 4 5 6 7 8 9
|
// Code qui ne marche pas
MaStruct maStruct;
maStruct.a = 1;
maStruct.b = 2;
maStruct.c = 3;
maStruct.d = 4;
mailbox_send( (void*)maStruct ); |
Je peux le faire en "faintant" le compilateur, mais cela n'est pas vraiment accèptable pour mon projet :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
// Code qui marche, mais pas très beau
MaStruct maStruct;
int *i;
maStruct.a = 1;
maStruct.b = 2;
maStruct.c = 3;
maStruct.d = 4;
i = (int*)&maStruct;
mailbox_send( (void*)*i ); |
Merci de votre attention
Jérôme