OSAtomicDecrement (mac 특정 원자 연산)를 사용하려면 4 바이트의 SInt32를 제공해야합니다.멤버가 4 바이트로 정렬되도록하는 방법은 무엇입니까?
이러한 종류의 요리가 가능합니까? 정렬 문제를 해결할 다른 방법이 있습니까?
struct SomeClass {
SomeClass() {
member_ = &storage_ + ((4 - (&storage_ % 4)) % 4);
*member_ = 0;
}
SInt32 *member_;
struct {
SInt32 a;
SInt32 b;
} storage_;
};
이 솔루션의 이점은 이동성이 낮고 추가로 4 바이트의 공간이 사용되기 때문입니다 괜찮습니까?) – gaspard
다른'#ifdef __gcc__'를 추가하고 싶지 않습니다 ... – gaspard
-1 : 포인터의 저장소가 정렬되어 있는지 확인합니다. 예, storage_와 정렬되기 때문에 정렬도되지만 간접적이며 혼란 스럽습니다. 정렬 지정을 권장하려면 변수를 직접 정렬하기 만하면됩니다 (구조체를 삭제하고'__attribute __ ((__ aligned (4)) '멤버를 만듦). SInt32 a_;' –