6
好像編譯器選項-malign-double
已從Clang中刪除。示例代碼: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;
}
當與GCC在32位模式下(-m32
)編譯,這可以被輸出爲8或4製成取決於如果-malign-double
啓用或不分別。但鏘似乎並不支持這個選項:
$ 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 2012-07-22 21:13:36
好吧,看起來它仍然不可能,正如有人告訴我的irc:「沒有選擇,如果可能的話(如不受ABI約束),LLVM將使用自然對齊|如果它是生成代碼,你總是可以使用屬性強制對齊「 –
tito
2012-07-22 21:28:28