哪个是g ++的VLA扩展?

时间:2010-11-11 03:59:37

标签: c++ g++

我的问题与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>

1 个答案:

答案 0 :(得分:6)

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

#include <stdio.h>

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