Как использовать Alignas для замены Pragma Pack?C++

Программы на C++. Форум разработчиков
Anonymous
Как использовать Alignas для замены Pragma Pack?

Сообщение Anonymous »

Я пытаюсь понять, как следует использовать Alignas, мне интересно, может ли это быть заменой для Pragma Pack, я изо всех сил старался проверить его, но без удачи. Используя GCC 4.8.1 (http://ideone.com/04mxpi), я всегда получаю 8 байтов для ниже Stestalignas, а с Pragma Pack - 5 байтов. Что я хотел бы достичь, так это сделать SizeOf (SteStAlignas) return 5. Я попытался запустить этот код на Clang 3.3 (http://gcc.godbolt.org/), но я получил ошибку:
!! Ошибка: запрошенное выравнивание меньше, чем минимальное выравнивание 8 для типа 'long' - чуть ниже использования Alignas. < /p>

Так что, возможно, есть Минимальное значение выравнивания для Alignas?

Код: Выделить всё

#include 
#include 
using namespace std;

#pragma pack(1)
struct STestPragmaPack {
char c;
long d;
} datasPP;
#pragma pack()

struct STestAttributPacked {
char c;
long d;
} __attribute__((packed)) datasAP;

struct STestAlignas {
char c;
alignas(char) long d;
} datasA;

int main() {
cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/18978006/how-to-use-alignas-to-replace-pragma-pack[/url]

Вернуться в «C++»