我的问题与这个帖子有关.
这是代码
#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)
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)