Io uso g ++ per compilare il codice con i campi compressi. Tuttavia, ricevo un errore quando tento di restituire un riferimento a un campo compresso.Perché non posso restituire un riferimento a un campo compresso?
Esempio:
struct __attribute__((packed)) Foo {
int* ptr;
uint16_t foo;
int*& getPtr(){
return ptr;
}
};
cede errore:
test.cpp:22:14: error: cannot bind packed field ‘((Foo*)this)->Foo::ptr’ to ‘int*&’
return ptr;
Perché non è possibile restituire un riferimento a un campo imballato?
Se è pieno, il campo potrebbe non essere allineato correttamente. –
@ T.C .: C'è un modo per dire a gcc "Allineamento vite, sono su x86"? – gexicide
@gexicide 'return (int * &)ptr;' –