__packed 属性在函数参数中的用途是什么
What is the use of __packed attribute in function arguments
int readint(__packed int *data)
{
return *data;
}
我在 struct
声明中看到了 __packed
属性以避免填充。但是,在函数参数中使用 __packed
属性有什么好处。
author 说他已经用 __packed
告诉编译器整数可能没有对齐。这是什么意思?
编辑: 以下是否可以与 gcc
编译器一起工作
int readint(__attribute__((packed)) int *data)
{
return *data;
}
__packed
限定符是 ARM 发布的 armcc
C 编译器的特定于编译器的功能。 A full explanation is present in their documentation,但简而言之,它表示不应将用于对齐的填充插入到限定对象中,并且应访问具有此限定符的指针,就好像它们可能未对齐一样。 (这可能会导致为某些处理器生成较慢的代码,因此不应随意使用。)
请注意,这 与 GCC packed
属性不同,后者仅适用于 struct
和 union
类型定义。
int readint(__packed int *data)
{
return *data;
}
我在 struct
声明中看到了 __packed
属性以避免填充。但是,在函数参数中使用 __packed
属性有什么好处。
author 说他已经用 __packed
告诉编译器整数可能没有对齐。这是什么意思?
编辑: 以下是否可以与 gcc
编译器一起工作
int readint(__attribute__((packed)) int *data)
{
return *data;
}
__packed
限定符是 ARM 发布的 armcc
C 编译器的特定于编译器的功能。 A full explanation is present in their documentation,但简而言之,它表示不应将用于对齐的填充插入到限定对象中,并且应访问具有此限定符的指针,就好像它们可能未对齐一样。 (这可能会导致为某些处理器生成较慢的代码,因此不应随意使用。)
请注意,这 与 GCC packed
属性不同,后者仅适用于 struct
和 union
类型定义。