📜  错误:在函数体外部使用参数] token c++ 代码示例

📅  最后修改于: 2022-03-11 14:44:54.854000             🧑  作者: Mango

代码示例1
If you are using GCC, then you are to pass the length of the array 
as a parameter to the function.

void foo (int m, int arr[][m]) {
    //...
}

However, there seems to be a bug in either the compiler or 
the documentation, as the above function prototype syntax 
only works when compiling C code, not C++ (as of gcc version 4.8.2). 
The only work-around I found was to use a void * parameter, 
and cast it int the function body:

int foo_workaround (int m, void *x)
{
    int (*arr)[m] = static_cast(x);
    //...
}

There are other solutions if you do not want to rely on a compiler
extension. If you don't mind a separate allocation for each row, 
you can use a vector of vectors, for example:

std::vector > arr(n, std::vector(m));