c - 又一个 "x"没有命名类型错误

标签 c

与这里的许多其他“x”没有命名类型错误不同,我不认为这个涉及循环依赖,但我仍然无法弄清楚它。

typedef struct        /* structure definitions */
{
   float  mat[4][4];
}  matrix_unit;

matrix_unit I = {
{ 1., 0., 0., 0.,
  0., 1., 0., 0.,
  0., 0., 1., 0.,
  0., 0., 0., 1  },
};

matrix_unit *stack[50];    /* (line 456) array of pointers to act as a stack */
matrix_unit stackbase = I;
stack[0] = &stackbase;  // 'stack' does not name a type

由于 stack 已经被声明为指向 matrix_unit 结构的指针堆栈,这不应该是有效的吗?

当我使用“gcc -c 3D.c”编译代码时,我从这些行中收到以下错误:

3D.c:457:1: error: initializer element is not constant
3D.c:458:1: warning: data definition has no type or storage class
3D.c:458:1: error: conflicting types for ‘stack’
3D.c:456:14: note: previous declaration of ‘stack’ was here
3D.c:458:1: error: invalid initializer

预先感谢您的帮助。

最佳答案

编译器正在尝试将第 458 行解析为声明。不是,这是一个声明。语句必须写在函数内部。像这样:

void initialize() 
{
    stack[0] = &stackbase;
}

关于c - 又一个 "x"没有命名类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9882505/

相关文章:

c - 使用C语言中的递归函数搜索数组中的元素

c - 从输入文件扫描时 Scanf 忽略换行符

c++ - 打印 float ,保持精度

C:帮助我理解输出

用 C 计算文本文件中所有字符出现的次数

c++ - 这段代码是什么意思

结构内的 C 语言 : Way to access a field in a structure,(这个有点棘手)

c - if 语句和 mod(SIZE) 之间的效率差异

c - 流式细胞术 FCS 文件数据段,线性数据似乎有偏差

c - 是否可以在每条指令后转储内存?