gpt4 book ai didi

c - 结构 C 中未声明的变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:10 25 4
gpt4 key购买 nike

我的结构代码是这样的:

typedef struct  
{
int w;
int h;
float m[w][h];
} Matrix;

但我刚收到这个错误:
“错误:'w' 未在此处声明(不在函数中)”
“错误:'h' 未在此处声明(不在函数中)”

如何正确编码此结构?

最佳答案

Muli 的回答显示了如何解决您的问题。这是编译失败的解释:编译器不知道为每个 Matrix 结构声明分配多少内存的边界在哪里,因为维度(w 和 h 的值)在编译时是未知的。如果 m 数组的最大维度在构建时已知,您可以使用预定义的大小结构,例如

#define MAX_W 10
#define MAX_H 10

struct {
int w;
int h;
float m[MAX_W][MAX_H];
};

struct matrix my_matrix;
...

之后您可以根据需要声明和使用矩阵结构。这种方法的缺点是分配比必要更多的内存的成本。

遵循 linux 内核编码准则,我不喜欢 typedef,因为它们往往会使数据定义变得不透明:如果某些东西在其他地方被声明为 typedefined 类型,理解它是一个结构会稍微复杂一些。

关于c - 结构 C 中未声明的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26205904/

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