未知边界参数的多维数组:C和c++的区别



将以下程序编译为C程序:

#include <stdlib.h>
#include <stdio.h>
void f(int n, int m, int x[n][m]) {
printf("x[0][2] = %in",x[0][2]);
}
int main() {
int v[][3] = { {0,1,2}, {3,4,5} };
f(2,3,v);
}

然而,当用c++编译为c++时,我有:

main.c:4:29: error: use of parameter outside function body before ‘]’ token
void f(int n, int m, int x[n][m]) {
^

似乎c++中不存在C的这个特性。是否有任何标志可以给g++,使它接受代码?

c++中似乎不存在C的这个特性。

正确的。

是否有任何标志可以给g++以便它接受代码?

不,没有这样的特性允许VLA作为参数列表的一部分。您必须将代码编译为c。

存在其他类似的gcc扩展,参见:https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html

相关内容

  • 没有找到相关文章