【发布时间】:2019-05-21 09:06:54
【问题描述】:
我可能在 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,我得到了多个定义错误。有什么建议吗?
【问题讨论】:
-
void testFunction()的定义没有为第一个参数提供 type。 -
您不能声明具有非常量维度的函数原型。
-
@Jean-FrançoisFabre 当然可以,使用 VLA。
-
您收到的错误消息可能是“在文件范围内可变地修改'矩阵'”,而不是“在范围内可变地修改”。虽然我们知道您在这种情况下的意思,但请在以后准确地复制并粘贴错误消息。细节在计算机编程中很重要。
-
@Lundin 但不在全局范围内,并且以变量作为维度。这就是我的意思。