以下代码可交叉编译
struct Foo {
alignas(1) char c1;
alignas(1) char c2;
alignas(4) int i;
};
static_assert(sizeof(Foo) == (sizeof(int) + 4), "No cross-compilable");换句话说,它是否保证sizeof(Foo) == (sizeof(int) + 4)适用于任何架构/平台?
发布于 2017-11-25 19:46:47
不是没有保证的。这在今天的许多体系结构上都是可行的,但是对于一个8字节int (在8字节边界上对齐)的系统来说,这是行不通的。但是,在这种情况下,您应该得到编译器诊断,因为您试图对int应用不那么严格的对齐;请参见dcl.align。
https://stackoverflow.com/questions/47489763
复制相似问题