gpt4 book ai didi

不同 .c 文件之间公共(public)变量的 c 语法错误

转载 作者:行者123 更新时间:2023-12-01 13:14:48 25 4
gpt4 key购买 nike

我可能遇到了 c 语言的语法问题。我有 main.c 和 test.c 我正在尝试使用公共(public)变量。
文件 main.c

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

文件测试.c

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

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

最佳答案

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

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

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

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

关于不同 .c 文件之间公共(public)变量的 c 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56234863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com