我有一个内部只包含一个数组的类,例如:
class foo {
public:
// methods
private:
int myarray[10];
};在其他地方,我有一个包含foo的压缩结构(GCC扩展):
struct __attribute__((__packed__)) bar {
foo x;
};但GCC抱怨说,'foo‘没有人,所以酒吧没有人。现在,如果我让foo也打包,那么GCC的错误就会消失。我打算在打包的结构中以外的上下文中使用foo,所以现在我有两个版本的foo,Foo和PackedFoo。但是,考虑到它们每个都只包含一个数组,而且C++中没有“解压包数组”这样的东西,我只使用Foo并给它一个压缩属性有什么坏处吗?当我在打包的结构外使用Foo时,它会以某种方式减慢GCC生成的代码吗?
发布于 2012-02-15 00:01:30
如果你的struct中只有it (或者it数组),那么打包就没有多大意义了。我希望它是无害的。
同样,如果在bar中只有foo,那么打包也没有意义。我想你只是简单地避开了其余的内容?
无论如何,你的问题的答案是,打包的结构(打包它确实有一些效果)会导致程序运行速度变慢。如果没有,那么“解包”结构就没有意义了。不过,如果它不在程序的性能关键部分,这可能不会有什么坏处。
那是行不通的。
在应用程序API或网络中使用打包的结构也是不安全的,除非您非常确定它会做什么。打包结构的布局不是标准化的,尽管它通常是相当可预测的。
https://stackoverflow.com/questions/9279901
复制相似问题