编译器认为struct是指向struct的指针

时间:2011-11-29 01:34:15

标签: c gcc struct

我声明了一个结构数组,并且想要声明第二个我可以复制的内容,以便在每个单元测试开始时重新初始化结构。

所以,我在2个头文件中声明

extern peripheralsArray_t Peripherals;  
extern peripheralsArray_t DefaultPeripherals;

和2个c文件

peripheralsArray_t Peripherals =
{... init  values };
peripheralsArray_t DefaultPeripherals;

但是,当我尝试分配DefaultPeripherals = Peripherals; GCC编辑器(在Cygwin下)时说

error: incompatible types when assigning 
       to type ‘peripheralsArray_t’ from type ‘struct _peripherals *’

为什么它认为Peripherals是指针?

2 个答案:

答案 0 :(得分:2)

假设您的类型名称是描述性的,peripheralsArray_t确实是数组

C不支持数组赋值,这是你要做的。

因此,编译器会在RHS上下文中看到一个数组,并推断它应该衰减为指针,然后该指针的类型错误。

答案 1 :(得分:2)

您无法分配数组。我假设peripheralsArray_t是一个typedef'd数组(这几乎总是一个坏主意)。