c-声明后的声明,gcc 4.5 vs visual c 2005

问题描述

|| 以下代码的确可以在gcc 4.5中进行编译,但不会在Visual c 2005中进行编译。
int main()
{
    int len;
    len = 32;
    char buff[len];

    return 0;
}
我知道我在声明之后声明数组,这违反了ANSI C规则。 但是为什么GCC不会给出任何错误或警告,而在Visual C中却给出了类似的错误
error C2143: Syntax error : missing \';\' before \'type\'
有任何想法吗? 谢谢。     

解决方法

        您的C代码不符合C90。
gcc -pedantic
会发出警告。
~/tmp$ gcc -pedantic a.c
a.c: In function ‘main’:
a.c:5: warning: ISO C90 forbids variable length array ‘buff’
a.c:5: warning: ISO C90 forbids mixed declarations and code
~/tmp$ 
    ,        Visual Studio 2005编译器无法处理动态数组分配。尝试
char buff[32]
,它将起作用。这是VS 2005的局限性。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...