【发布时间】:2014-12-16 03:47:06
【问题描述】:
我使用 g++ 编译带有压缩字段的代码。但是,我在尝试返回对打包字段的引用时收到错误消息。
例子:
struct __attribute__((packed)) Foo {
int* ptr;
uint16_t foo;
int*& getPtr(){
return ptr;
}
};
产生错误:
test.cpp:22:14: error: cannot bind packed field ‘((Foo*)this)->Foo::ptr’ to ‘int*&’
return ptr;
为什么我不能返回对打包字段的引用?
【问题讨论】:
-
如果是打包的,字段可能没有正确对齐。
-
@T.C.:有没有办法告诉 gcc “螺丝对齐,我在 x86 上”?
-
@gexicide
return (int*&)ptr;
标签: c++ c++11 gcc reference packed