首页 > 解决方案 > 不同.c文件之间公共变量的c语法错误

问题描述

我可能在 c 中面临语法问题。我有 main.c 和 test.c 我正在尝试使用公共变量。
文件 main.c

extern int a;
extern int b;
uint8_t matrix[(a+1)*b][4];
testFunction(matrix, 10)

文件 test.c

int a=1;
int b=2;
void testFunction(matrix[(a+1)*b][4], uint8_t z){
....}

如果我编译我得到错误“在范围内可变地修改”。我将 main.c 上的 a+1 更改为 2,我得到了多个定义错误。有什么建议么?

标签: csyntax

解决方案


您不能在文件范围内声明可变长度数组。使用具有外部链接的变量来衡量它们的大小也不是一个明智的主意。你可能想要的是这样的:

void testFunction (int x, int y, uint8_t matrix[x][y]);

在调用者中进行计算,xy不是作为函数声明的一部分。

(有一些方法可以在函数声明中进行大小计算,但它们很混乱,导致代码不可读。)


推荐阅读