3

私は構造を持っています:

struct foo {
  struct {
     int a;
     int b;
     long len;
     unsigned short c;
     unsigned short d;
  };
  char payload[1024];
} bar;

「ペイロード」を二重に揃えるためにパディングを挿入する必要があるかどうか、構成時に調べたいと思います。

Autoconf はAC_CHECK_SIZEOF(type)とを提供しますAC_CHECK_ALIGNOF(type)が、私が本当に必要としているのは のようなものAC_CHECK_OFFSETOF(type, member)です。報告されたオフセットが二重に位置合わせされていない場合は、そのようにするのに十分なパディングを導入できます。

を報告する小さなテスト プログラムを実行することもできますがoffsetof(struct bar, payload)、ビルド システムに実行時チェックを導入したくありません (クロスコンパイルは頻繁に行われます)。

4

3 に答える 3