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
@gexicide'return (int * &)ptr;' –