Где разместить __attribute__ ((выровненный)) с typedef: ed struct? - PullRequest
11 голосов
/ 08 декабря 2010

У меня есть информация Googled на gcc __attribute__ ((aligned)), чтобы узнать больше о том, как использовать атрибут.

Согласно GNU "Вы можете указать атрибуты align и transparent_union либо в объявлении typedef, либо сразу после закрытия фигурногоскобка полного определения типа enum, struct или union и упакованного атрибута только после закрывающей скобки определения. "Кроме того, в документе показан следующий пример:

struct S { short f[3]; } __attribute__ ((aligned (8)));

Но я нашел несколько примеров с "typedef struct".Я нашел следующие два:

typedef struct __attribute__ ((aligned)) { char a; int x; } foo;
typedef struct { char a; int x; } __attribute__ ((aligned)) foo;

Какой метод предпочтительнее: атрибут после структуры и до { или атрибут после } и до foo?

Они оба доставляюттот же результат?

Я был бы очень признателен за любые дополнительные подробности о правильном использовании __attribute__ ((aligned)) с typedef: ed struct.

1 Ответ

9 голосов
/ 01 января 2011

Из документа GCC :

Для типа enum, struct или union вы можете указать атрибуты между тегом enum, struct или union и именемвведите или только после закрывающей фигурной скобки определения. Прежний синтаксис является предпочтительным .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...