Подтвердить что ты не робот

Локально отключить отступы

Я пишу парсер для некоторой структуры данных, после нескольких часов отладки я узнал, что проблема в Visual Studio не интерпретирует структуры, как я говорю. Кажется, что используется "дополнение"

struct foo { 
unsigned char a; //0x00
unsigned char b; //0x01
unsigned int c; //0x02
unsigned int d; //0x06
unsigned int e; //0x0A
unsigned int f; //0x0E
//0x12
};

Я ожидал, что sizeof (foo) = 4 * 4 + 2 = 18 ", но я получаю sizeof (foo) = 20". Есть ли возможность отключить отладку только для этой специальной структуры? Я попробовал

__declspec(align(1)) struct foo { ...

но это не сработает. Благодарим вас за помощь.

4b9b3361

Ответ 1

Используйте директиву #pragma pack для этого:

#pragma pack(push, 1)
struct foo { 
  // etc..
};
#pragma pack(pop)

Ответ 2

Visual Studio 2010 имеет #pragma pack, чтобы выполнить то, что вы ищете.