Как использовать атрибут __packed в аргументах функции
int readint(__packed int *data)
{
return *data;
}
я видел __packed
приписывать struct
объявления, чтобы избежать заполнения. Однако какая польза от использования __packed
атрибут в аргументах функции.
Автор говорит, что он использовал __packed
сообщить компилятору, что целое число может быть не выровнено. Что это значит?
Изменить: Будет ли следующая работа с gcc
компилятор
int readint(__attribute__((packed)) int *data)
{
return *data;
}
1 ответ
__packed
квалификатор является специфичной для компилятора функцией armcc
Компилятор C, изданный ARM. Полное объяснение представлено в их документации, но вкратце, оно указывает, что в квалифицированный объект не следует вставлять отступы для выравнивания и что указатели с этим классификатором должны быть доступны так, как если бы они могли быть выровнены. (Это может привести к генерированию более медленного кода для некоторых процессоров, поэтому его не следует использовать безвозмездно.)
Обратите внимание, что это не то же самое, что GCC packed
атрибут, который применяется только к struct
а также union
определения типов.