8

-malign-doubleコンパイラ オプションが Clang から削除されたようです。コード例:

#include <stddef.h>
#include <stdio.h>

typedef struct X { char a; long long b; } X;

int main(void)
{
  printf("%zd\n", offsetof(X, b));
  return 0;
}

32 ビット モード ( ) で GCC を使用してコンパイルすると、が有効か無効-m32かに応じて、それぞれ 8 または 4 を出力するようにできます。-malign-doubleただし、Clang はこのオプションをサポートしていないようです。

$ clang test.c -m32 -malign-double
clang: warning: argument unused during compilation: '-malign-double'
$ ./a.out
4

Clang バージョン:

Apple clang version 3.1 (tags/Apple/clang-318.0.58) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.3.0
Thread model: posix

Clang でサポートされているコンパイラ フラグの完全なリストに関する公式ドキュメントを見つけることができないようです。ほとんどの場合、GCC のドキュメントに従っているようです。

-malign-double現在、Clang に相当するものはありますか? それとも、今のところ別のコンパイラを使用しなければならないのでしょうか? そのフラグを使用するバイナリのみのサードパーティ ライブラリにリンクするコードをコンパイルするために必要です。

4

1 に答える 1