如果变量是const,那么使用变量大小的数组进行初始化时,GCC不会报错,但如果变量不是const,则无法编译。这是什么原因?这样做有何问题呢?
int size = 7;
int test[size] = {3, 4, 5};
完全无法编译,但如果我不初始化test[],那么它就可以编译!对我来说这毫无意义,因为据我所知,栈帧需要根据其大小(7个整数)适应此数组,无论如何(这意味着我使用的整数字面值实际上没有任何意义,如果我没有弄错的话),因此,初始化与否有什么区别呢?
又是我疯狂的C++设计问题之一...
谢谢!
-pedantic
选项。如果没有它,gcc就不是遵循C++标准的实现,也不会试图如此。你不能仅仅因为gcc接受某些东西就得出结论它一定是符合语法规范的C++代码。 - Steve Jessop