-malign-double
コンパイラオプションがClangから削除されたようです。コード例:32ビットモード(-m32
)でGCCでコンパイルする場合ClangにはGCCの-malign-doubleフラグと同等の機能がありますか?
#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;
}
、-malign-double
ときは、この出力に応じて8または4のいずれかに行うことができ、それぞれ有効またはされていません。しかし、クランは、このオプションをサポートしていないよう:
$ clang test.c -m32 -malign-double
clang: warning: argument unused during compilation: '-malign-double'
$ ./a.out
4
クランバージョン:
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
私は、彼らはただ、クランでサポートされているコンパイラフラグの完全なリスト上の任意の公式ドキュメントを見つけることができないよう大部分はGCCの文書に従っているようです。
Clangの-malign-double
に相当するサービスはありますか?あるいは、別のコンパイラを今使っていなくてもいいですか?私は、そのフラグを使用するバイナリのみの第三者ライブラリとリンクするコードをコンパイルする必要があります。
回答はありましたか? – tito
これはまだ可能ではないようです。誰かが私にircに言ったように、 "これはオプションがありません(可能な場合はABIによって制約されません)。LLVMは自然なアライメントを使用します。属性を使用して常にアライメントを強制することができます " –
tito