哪个是g ++的VLA扩展?

Pra*_*rav 0 c++ g++

我的问题与这个帖子有关.

这是代码

#include <stdio.h>

int main(int argc, char *argv[printf("Hello, world!\n")]) {}
Run Code Online (Sandbox Code Playgroud)

我意外地将其保存为*.cpp文件并尝试使用它进行编译g++.但是我收到了错误和警告.

error: expected ',' or '...' before 'argv'
warning: second argument of 'int main(int, char*)' should be 'char ** '

我知道上面的代码不是标准C++ [数组的大小必须是C++中的常量表达式]但我一直认为g++支持Varible Length Array作为扩展.我哪里错了?

PS:上面的代码用CLang ++编译

C:\Users\SUPER USER\Desktop>type check.cpp
#include <stdio.h>

int main(int argc, char *argv[printf("Hello, world!\n")]) {}
C:\Users\SUPER USER\Desktop>clang++ check.cpp

C:\Users\SUPER USER\Desktop>
Run Code Online (Sandbox Code Playgroud)

Mat*_*hen 6

g ++允许(再次,作为扩展)VLA.我认为它只是不允许它们在参数列表中.这在g ++ 4.4.1中编译.

#include <stdio.h>

int main(int argc, char *argv[])
{
    char *array[printf("Hello, world!\n")];
}
Run Code Online (Sandbox Code Playgroud)