我的代码中有以下标记的联合:https://github.com/EarlGray/SECD/blob/f2e364f84d194aea5cef9257630bf931e9f88cab/secd.h#L217
当我使用gcc或clang在64位Linux或OS X上编译它时,cell_t
的大小总是32字节(4 * sizeof(long)
,如预期的那样)。
当我使用-m32
开关在Linux(Ubuntu 14.04,gcc 4.8)上编译它时,大小为16字节(如预期的那样)。
当我使用带有-m32
的gcc(4.8)或clang(Apple 6.0)在OS X(10.9.5)上编译相同的代码时,大小为20个字节。我试图调试程序,看看是否有任何可能使用第五个单词的联合案例,找不到任何。它不依赖于优化级别和调试信息存在。
为什么sizeof(cell_t)
是20个字节的任何想法?
答案 0 :(得分:2)
在OS X上:
sizeof(off_t) == 8
在Linux上:
sizeof(off_t) == 4
您在string_t中使用该类型。可能还有其他场合,但这是我遇到的第一次。