首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将包含单个数组的结构声明为压缩有什么缺点吗?

将包含单个数组的结构声明为压缩有什么缺点吗?
EN

Stack Overflow用户
提问于 2012-02-14 23:50:34
回答 1查看 187关注 0票数 0

我有一个内部只包含一个数组的类,例如:

代码语言:javascript
复制
class foo {
public:
    // methods
private:
    int myarray[10];
};

在其他地方,我有一个包含foo的压缩结构(GCC扩展):

代码语言:javascript
复制
struct __attribute__((__packed__)) bar {
    foo x;
};

但GCC抱怨说,'foo‘没有人,所以酒吧没有人。现在,如果我让foo也打包,那么GCC的错误就会消失。我打算在打包的结构中以外的上下文中使用foo,所以现在我有两个版本的foo,Foo和PackedFoo。但是,考虑到它们每个都只包含一个数组,而且C++中没有“解压包数组”这样的东西,我只使用Foo并给它一个压缩属性有什么坏处吗?当我在打包的结构外使用Foo时,它会以某种方式减慢GCC生成的代码吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-15 00:01:30

如果你的struct中只有it (或者it数组),那么打包就没有多大意义了。我希望它是无害的。

同样,如果在bar中只有foo,那么打包也没有意义。我想你只是简单地避开了其余的内容?

无论如何,你的问题的答案是,打包的结构(打包它确实有一些效果)会导致程序运行速度变慢。如果没有,那么“解包”结构就没有意义了。不过,如果它不在程序的性能关键部分,这可能不会有什么坏处。

那是行不通的。

在应用程序API或网络中使用打包的结构也是不安全的,除非您非常确定它会做什么。打包结构的布局不是标准化的,尽管它通常是相当可预测的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9279901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档