Использование атрибута, упакованного для классов в GCC

GCC документы говорит:

Вы можете указать только атрибут упакованного атрибута в определении
перечисления, структуры или объединения, а не на typedef, который также не
определить перечисляемый тип, структуру или объединение.

Означает ли это, что я не могу применить этот атрибут для классов?

1

Решение

Я не смог найти ответ четко в документе GCC, но с помощью следующих экспериментов, кажется, вы можете.

#include <iostream>struct UnPackedStruct {
unsigned char a;
int b;
};

struct __attribute__ ((__packed__)) PackedStruct {
unsigned char a;
int b;
};

class __attribute__ ((__packed__)) PackedClass{
unsigned char a;
int b;
};

int main()
{
std::cerr << "sizeof( UnPackedStruct ): " << sizeof(UnPackedStruct)
<< ", sizeof( PackedStruct ): " << sizeof(PackedStruct)
<< ", sizeof( PackedClass): " << sizeof(PackedClass)
<< "\n";

return 0;
}

Выход:

sizeof( UnPackedStruct ): 8, sizeof( PackedStruct ): 5, sizeof( PackedClass): 5

Попробуйте с онлайн-компилятором

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]