给定
struct Foo {
uint32_t a;
uint32_t b[];
};
什么是
sizeof(Foo)
?它是实现定义的行为还是未定义的行为? C和C++的答案是否有所不同? 最佳答案
编译器将忽略灵活数组成员,因为它不存在。
C11-§6.7.2.1(p18)
直到C++ 14为止,灵活数组成员AFAIK才是C++标准的一部分。但是,GNU将其支持为an extension。 C和C++的行为将相似。
给定
struct Foo {
uint32_t a;
uint32_t b[];
};
sizeof(Foo)
?它是实现定义的行为还是未定义的行为? C和C++的答案是否有所不同? 最佳答案
编译器将忽略灵活数组成员,因为它不存在。
C11-§6.7.2.1(p18)
直到C++ 14为止,灵活数组成员AFAIK才是C++标准的一部分。但是,GNU将其支持为an extension。 C和C++的行为将相似。