我为一个赋值语句编写了一个程序,在这个程序中,我是这样分配内存的:EdgeBucket* edgeTable[ n_scanlines ];
。我知道这在C中通常是非法的,但我不知道在C中也不能这样做。然而,当我使用g编译它时,它没有给出编译错误。但我的评分员使用的是VisualStudio,当他试图构建我的程序时,它给出了错误,说明数组的长度必须是常量。我通常用-ansi和-Wall选项编译我的程序,以确保跨编译器的完整性,我担心我的成绩会因此受到影响,所以有人知道为什么-ansi编译器没有发现这个问题吗?怎样做才能防止进一步的跨编译器差异?
1条答案
按热度按时间ygya80vv1#
使用
-pedantic-errors
标志. Example。它们被称为可变长度数组(VLA),在C99的C中是法律的的,在C++中是非法的。