c++ 动态内存分配的交叉编译器问题

xu3bshqb  于 2023-03-25  发布在  其他
关注(0)|答案(1)|浏览(81)

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

ygya80vv

ygya80vv1#

使用-pedantic-errors标志. Example
它们被称为可变长度数组(VLA),在C99的C中是法律的的,在C++中是非法的。

相关问题