2010-11-11 1 views
0

Ma question concerne le fil this.Où est l'extension VLA de g ++?

Voici le code

#include <stdio.h> 

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

Je l'ai sauvé par mégarde comme un fichier *.cpp et essayé de le compiler avec g++. Mais j'ai eu une erreur et un avertissement.

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

Je sais que le code ci-dessus ne sont pas standard C++ [taille d'un tableau doit être une expression constante en C++] mais j'ai toujours pensé g++ prend en charge Varible Longueur tableau comme extension. Où ai-je tort?

P.S: Le code ci-dessus est compilée avec 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> 

Répondre

6

g ++ permet (encore une fois, comme une extension) Vlas. Je pense que cela ne les autorise pas dans les listes de paramètres. Cela compile en g ++ 4.4.1.

#include <stdio.h> 

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