c – 如何确保成员是4字节对齐的?
作者:互联网
为了使用OSAtomicDecrement(特定于mac的原子操作),我需要提供一个4字节对齐的SInt32.
这种烹饪有用吗?有没有其他方法来处理对齐问题?
struct SomeClass {
SomeClass() {
member_ = &storage_ + ((4 - (&storage_ % 4)) % 4);
*member_ = 0;
}
SInt32 *member_;
struct {
SInt32 a;
SInt32 b;
} storage_;
};
解决方法:
如果你在Mac上,这意味着GCC. GCC可以为您自动对齐变量:
__attribute__((__aligned__(4))) int32_t member_;
请注意,这不适用于编译器,因为这是GCC特定的.
标签:c,memory-alignment,atomic 来源: https://codeday.me/bug/20190724/1519177.html