J'essaye d'emballer certaines structures avec Borland C++ Builder (XE6) (dans le futur: bcc).Utilisez #pragma pack aveC#define sur Borland C++
J'utilise une bibliothèque qui utilise la construction suivante pour créer struct:
#ifdef _MSC_VER
#define PACKED_BEGIN __pragma(pack(push, 1))
#define PACKED
#define PACKED_END __pragma(pack(pop))
#elif defined(__GNUC__)
#define PACKED_BEGIN
#define PACKED __attribute__((__packed__))
#define PACKED_END
#endif
PACKED_BEGIN
struct PACKED {
short someSampleShort;
char sampleByte;
int sampleInteger;
} structType_t;
PACKED_END
Le compilateur Cci n'aime pas le MSC __pragma
, et n'aime pas les directives de préprocesseur à l'intérieur des macros bien qu'elle soit décrite sur their website :
#define GETSTD #include <stdio.h>
Ma question est: est-il possible d'utiliser cette construction avec le compilateur Borland pour emballer un struct sans en utilisant:
#pragma pack(1)
d'emballer chaque struct?
Existe-t-il des solutions de contournement pour cela?
Vous peut toujours utiliser '#include" packed_begin.h "' et '#include" pa cked_end.h "' (sans gardes) – Jarod42
Merci pour votre commentaire, mais je ne peux pas utiliser #include dans une macro parce que borland ne supporte pas cela. Je pourrais réécrire la bibliothèque, mais j'espérais une possibilité avec des macros – user2358582
@ user2358582 Et bien, il ne devrait pas, ce n'est pas légal C++. Je crois que Jarod voulait que vous puissiez * remplacer * les lignes de macro avec ça. – Angew