c - 函数声明上的 "Error: array type has incomplete element type"

标签 c function

这是函数的声明,编译器在声明和定义中给出:“错误:数组类型具有不完整的元素类型”。我没有看到错误。

void calculate(float matrM[][], int origMatr[][]);

最佳答案

C 没有非常强大的数组,尤其是在调用函数时。基本上,在运行时发送到函数的唯一数据是第一个元素的地址。这意味着除了最上面的所有方向的维度都必须是已知的,以便编译器能够生成索引代码。因此,您不能有两个未知维度,这使得索引不可能,因此是不允许的。

你不能像那样声明一个“任意大小”的数组,你必须指定除一维之外的所有维度,否则无法计算数组中随机元素的地址。

通常最好将其分解为:

void calculate(float *out, const float *in, size_t width, size_t height);

这会让您将任何内存块视为float 数组,但需要您指定大小,并手动编写索引:

out[y * width + x] = in[y * width + x];

关于c - 函数声明上的 "Error: array type has incomplete element type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16839553/

相关文章:

function - 如何从递归函数delphi/pascal返回 bool 值

postgresql - 触发函数参数 PLSH

c - 具有 MATLAB mex 函数的用户定义结构

c - 并行化小型网络排序

c - MPI 发送-接收程序中消息的值应该是多少?

c - C 中的 open() 系统调用以字符数组作为附加路径?到文件名

javascript - 更改 Jquery .filter() 函数内的变量值

c - 指针值改变

javascript - 尝试定义异步函数

javascript - Hangman jQuery 函数