Questions tagged «pragma-pack»

11
#pragma pack效果
我想知道是否有人可以向我解释#pragma pack预处理器语句的作用,更重要的是,为什么要使用它。 我检查了MSDN页面,该页面提供了一些见解,但我希望能从有经验的人那里听到更多。我以前在代码中已经看到过,尽管我似乎再也找不到了。

5
gcc的__attribute __((packed))/ #pragma pack是否不安全?
在C语言中,编译器将按声明的顺序对结构的成员进行布局,并在成员之间或最后一个成员之后插入填充字节,以确保每个成员正确对齐。 gcc提供了语言扩展名,__attribute__((packed))它告诉编译器不要插入填充,从而使结构成员无法对齐。例如,如果系统通常要求所有int对象具有4字节对齐,则__attribute__((packed))可能导致int以奇数偏移量分配结构成员。 引用gcc文档: “ packed”属性指定变量或结构字段应具有最小的对齐方式-变量一个字节,一个字段一位,除非您使用“ aligned”属性指定更大的值。 显然,使用此扩展名可能会导致数据需求较小,但代码速度却很慢,因为编译器必须(在某些平台上)生成代码以一次访问一个未对齐的成员一个字节。 但是,在任何情况下这都不安全吗?编译器是否总是生成正确的(尽管速度较慢)代码以访问打包结构中未对齐的成员?是否在所有情况下都可能这样做?
164 c  gcc  pragma-pack 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.