Есть определеение
#define __packed __attribute__(packed)
/* понятно что это GCC */
есть определение структуры
typedef struct __packed st1
{
int a,
char b;
int c;
}_st1;
Требуется написать
это же (!!!) на МС-овском си.
Проблема в том, что
1) #pragma pack(1) — требует возвращения упаковки поумолчанию. Типа pack(push,1) ла-ла-ла pack(pop) в отличии от __attribute__
https://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html
2) наличие '#' нельзя использовать в макросах, НО есть выход __pragma(pack(1))
3) проблема в том, что вот такой код поедается
typedef struct
#pragma pack(1)
st1
{
int a,
char b;
int c;
}_st1;
а вот такой нет
#define __packed __pragma(pack(1))
typedef struct __packed st1
{
int a,
char b;
int c;
}_st1;
То есть задача то простая — сделать так чтобы струкутры с атрибутами GCC были упакованы но можно только переопределелять слово __packed, которое стоит в коде местами после struct.