我的问题与this主题有关。
这是代码
#include <stdio.h>
int main(int argc, char *argv[printf("Hello, world!\n")]) {}
我意外地将其保存为*.cpp
文件并尝试使用g++
进行编译。但是我收到了错误和警告。
error: expected ',' or '...' before 'argv'
warning: second argument of 'int main(int, char*)' should be 'char ** '
我知道上面的代码不是标准C ++ [数组的大小必须是C ++中的常量表达式]但是
我一直认为g++
支持Varible Length Array作为扩展。我哪里错了?
P.S:上面的代码用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>
答案 0 :(得分:6)
g ++允许(再次,作为扩展)VLA。我认为它只是不允许它们在参数列表中。这用g ++ 4.4.1编译。
#include <stdio.h>
int main(int argc, char *argv[])
{
char *array[printf("Hello, world!\n")];
}