我不明白为什么出现上述错误以及如何解决该错误。请帮忙。为什么会出现错误:从类型'UINT8 *'分配类型'P_Name_t'时出现不兼容类型
//STRUCTURES
typedef UINT8 P_Name_t[5];
typedef UINT8 ChipSN_t[3];
typedef struct
{
ChipSN_t ChipSN;
<other members>
} ChipIdent_t;
typedef struct Data_t
{
ChipIdent_t ReadOnlyMemID;
<other members>
} Data_t;
typedef struct
{
P_Name_t NameOfPart;
<other members>
} Log_t;
Data_t Data_Src;
typedef struct
{
P_Name_t NameOfPart;
ChipSN_t ChipSN;
}PartNum_ID_t;
//VARIABLE DECALARTION
PRIVATE PartNum_ID_t PN_ChipID[12];
PRIVATE Log_t *LogEntry = NULL;
//Usage in code
PN_ChipID[0].NameOfPart = LogEntry->NameOfPart;
PN_ChipID[0].ChipSN = Data_Src.ReadOnlyMemID.ChipSN;
我不明白为什么我会得到错误。 LogEntry->NameOfPart
类型为P_Name_t
和PN_ChipID[0].NameOfPart
属于同一类型。我不知道我是否在这里失去了一些东西。请解释。
1. C编程的第一条规则**不要**'typedef'指针。 2. C编程的第二条规则**不要使用'_t'作为自定义类型的名称(参见POSIX)。 3.第三条规则 - 见1和2. – 0andriy
请[mcve]。随着你所提供的,有太多的猜测正在进行。 – Yunnosch
@ 0andriy:我同意第一条规则,而不是第二条规则,这对POSIX程序员来说是一个规则,并且C之外还有C。我会说第二个规则是:**不要**'typedef'数组! – rodrigo