Tôi sử dụng g ++ để biên dịch mã với các trường được đóng gói. Tuy nhiên, tôi nhận được lỗi khi cố gắng trả lại tham chiếu đến trường được đóng gói.Tại sao tôi không thể trả lại tham chiếu đến trường được đóng gói?
Ví dụ:
struct __attribute__((packed)) Foo {
int* ptr;
uint16_t foo;
int*& getPtr(){
return ptr;
}
};
mang lại lỗi:
test.cpp:22:14: error: cannot bind packed field ‘((Foo*)this)->Foo::ptr’ to ‘int*&’
return ptr;
Tại sao tôi không thể trả về một tham chiếu đến một lĩnh vực đóng gói?
Nếu nó được đóng gói, trường có thể không được căn chỉnh đúng cách. –
@ T.C .: Có cách nào để nói với gcc "Liên kết trục vít, tôi trên x86" không? – gexicide
@gexicide 'return (int * &)ptr;' –