将以下程序编译为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