VS2019 alignas в определении структуры отменяет пакет прагмыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 VS2019 alignas в определении структуры отменяет пакет прагмы

Сообщение Anonymous »

Я пытаюсь упаковать структуру «Test» с помощью пакета #pragma.
В VS2019 16.7.2 следующее статическое утверждение завершается с ошибкой.

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

struct alignas(4 * sizeof(float)) Vec4
{
float x,y,z,w;
};

#pragma pack(push,1)
struct Test
{
char f;
Vec4 vec;
};
#pragma pack(pop)

static_assert(sizeof(Test) == sizeof(char) + sizeof(Vec4), "Incorrect size.");
Размер Test равен 2*sizeof(Vec4), что показывает, что alignas в самом определении структуры имеет приоритет над пакетом.
Статический утверждение не терпит неудачу в GCC 10.2 или Clang 11.0.0.
Кто-нибудь знает, как упаковать Test по желанию? (без изменения выравнивания структуры Vec4)
Спасибо.
Бен

Подробнее здесь: https://stackoverflow.com/questions/644 ... ragma-pack
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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