其他分享
首页 > 其他分享> > c – 如何确保成员是4字节对齐的?

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