Bonjours,
J'ai une structure composé de 4 champs de 8 octets

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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