AFAIK此代码不是标准的有效c ++代码:
int a = 5;
int b[a];
Run Code Online (Sandbox Code Playgroud)
但似乎很多编译器可以编译该代码(主要是警告),它只是按预期运行.我错了是编译器对我好吗?
它被称为可变长度数组(VLA),标准C++,任何版本的C++都不允许这样做,尽管有些GCC支持它作为扩展.
如果您正在使用GCC,那么
-pedantic选项编译它,你会看到警告.-pedantic -Werror选项编译它,您将看到警告变为错误.VLA只允许通过C99,但不能通过其他版本的C.