在C99中,您可以声明结构的灵活数组成员:
struct blah
{
int foo[];
};
Run Code Online (Sandbox Code Playgroud)
但是,当有人在这里工作时尝试使用C++中的clang编译一些代码时,该语法不起作用.(它一直在与MSVC合作.)我们不得不将其转换为:
struct blah
{
int foo[0];
};
Run Code Online (Sandbox Code Playgroud)
通过C++标准,我发现根本没有提到灵活的成员数组; 我一直认为这[0]是一个无效的声明,但显然对于一个灵活的成员数组它是有效的.灵活的成员数组在C++中实际上是否有效?如果是这样,是正确的声明[]还是[0]?