我不熟悉这个。我在谷歌上搜索了它,但没有找到我的答案。所以,发布我的问题。刚刚尝试了以下程序:
#include <iostream>
class test
{
static char a[];
static int b[];
};
int main()
{
test t;
}
它在 MSVS 2010 和 g++ 4.8.1 上编译良好,没有任何警告。它在 C++14 编译器中也能很好地编译。(请参阅此处的现场演示。)那么,C++ 标准在哪里说明了这一点?如果我从测试类中的 char 数组的声明中删除 static 关键字,ISO C++ forbids zero size array
当我在 MSVS 2010 编译器中使用-pedantic-errors
g++ 和选项中的命令行选项时,编译器会出错,/Za
它说error C2133: 'test::a' : unknown size
。所以,我的问题是:
1)未知大小的静态数组有什么用?
2)我以后如何指定它们的大小并访问该数组元素?我真的很困惑。
3) 为什么去掉 static 关键字会导致编译错误?
如果有人用简单的例子来解释它会更好。
谢谢。