Как использовать 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]
Ответить

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

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

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

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

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