1

我为分配内存编写了一个程序,我以这种方式分配内存: EdgeBucket* edgeTable[ n_scanlines ];. 我知道这在 C 中通常是非法的,但我不知道它也不能在 C++ 中完成。但是,当我使用 g++ 编译它时,它没有给出编译错误。但是我的评分者正在使用视觉工作室,当他尝试构建我的程序时,它给出了错误,指出数组的长度必须是恒定的。我通常使用 -ansi 和 -Wall 选项编译我的程序以确保交叉编译器的完整性,但即使这样也没有检测到这一点。我担心我的成绩会因此受到影响,所以有谁知道为什么 -ansi 编译器没有捕捉到这一点,以及可以做些什么来防止进一步的交叉编译器差异?

4

1 回答 1

1

使用-pedantic-errors标志。例子

它们被称为 VLA(可变长度数组)。从 C99 开始在 C 中是合法的,在 C++ 中是非法的。

于 2013-04-15T22:30:15.207 回答