c - 不同.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,我得到了多个定义错误。有什么建议么?
解决方案
您不能在文件范围内声明可变长度数组。使用具有外部链接的变量来衡量它们的大小也不是一个明智的主意。你可能想要的是这样的:
void testFunction (int x, int y, uint8_t matrix[x][y]);
在调用者中进行计算,x
而y
不是作为函数声明的一部分。
(有一些方法可以在函数声明中进行大小计算,但它们很混乱,导致代码不可读。)
推荐阅读
- sql - Check the example below. Trying to make a sql query which will work in Derby database
- c# - 如何比较两个 dgv 并将 datagridview 传递给另一个 Form c#
- c# - 具有选定父级的树视图模板
- java - 如何获得 Java2D 的假定屏幕分辨率?
- javascript - Angular 6 Typescript 从数组中提取元素并进行比较
- encryption - 如何在C中解密虚拟内存中的文件
- ios - UICollectionReusableView 中的 UIBUtton 操作
- php - Typo3 8.7.19 扩展迁移。错误:无法分析类
- mysql - 通过python脚本执行mysql查询时出错
- java - 带有条件的 SQLITE 随机值/行