Bonjour,

J'ai une conversion à faire mais je ne trouve pas comment, voici le code C++ :

Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 typedef union __address
	{
		uint16_t value;
		struct
		{
			uint8_t high;
			uint8_t low;
		} bytes;
		struct __attribute__((packed))
		{
			uint8_t line:3;
			uint8_t area:5;
			uint8_t member;
		} ga;
		struct __attribute__((packed))
		{
			uint8_t line:4;
			uint8_t area:4;
			uint8_t member;
		} pa;
		uint8_t array[2];
	} address_t;

Pour l'union je sais faire, il suffit d'utiliser le case :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
type
 
Tbytes = record
  high : Byte;
  low : Byte;
end;
 
etc
 
address_t = record
   ...
   case Integer of
      0: bytes : TBytes;
      1: ga : ..;
      2: pa : ...I;
   end;
   ...
end;
Ce que je ne sais pas traduire c'est le struct avec __attribute__((packed)) :

Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
struct __attribute__((packed))
		{
			uint8_t line:3;
			uint8_t area:5;
			uint8_t member;
		} ga;

que signifie les éléments de cette structure ? uint8_t line:3;

que veut dire le ':3' et comment traduire __attribute__((packed)) en Delphi ?

D'après mes recherches __attribute__((packed)) est utilisé pour minimiser l'espace mémoire utilisé