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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Установка целевых параметров GCC (AVX2) для статических встроенных переменных с помощью прагмы не работает?
    Anonymous » » в форуме C++
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Выравнивание памяти: как использовать alignof/alignas?
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • GCC и MSVC принимают «alignas», тогда как Clang отклоняет их.
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Alignas для замены Pragma Pack?
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Ошибка: MSB3073 завершился с кодом 3 — VS2019.
    Anonymous » » в форуме C++
    0 Ответы
    140 Просмотры
    Последнее сообщение Anonymous

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