我有以下用C语言编写的代码:
n. struct UDSData {
char *name;
char *address;
};
n. char UDS1[16] = "fill up sixteen", UDS2[16] = "fill up sixteen";
n. while (something) {
...
108. char UDS1Temp[16], UDS2Temp[16];
109. strcpy(UDS1Temp, UDS1);
110. strcpy(UDS2Temp, UDS2);
111.
112. struct UDSData item = {UDS1Temp, UDS2Temp};
113. UDSCodes[UDSTotal++] = item;
}
知道为什么代码会编译以产生这些错误:
1><file>(112): error C2143: syntax error : missing ';' before 'type'
1><file>(113): error C2065: 'item' : undeclared identifier
1><file(113): error C2440: '=' : cannot convert from 'int' to 'UDSData'
删除
strcpy()
并将UDS1
和UDS2
直接输入到结构工程中。 最佳答案
几乎可以肯定,您正在使用早期的编译器标准,例如C89,该标准不允许混合声明和代码。您需要在代码块开头附近声明item
。像这样:
char UDS1Temp[16], UDS2Temp[16];
struct UDSData item = {UDS1Temp, UDS2Temp};
strcpy(UDS1Temp, UDS1);
strcpy(UDS2Temp, UDS2);
UDSCodes[UDSTotal++] = item
由于您仅将指针放在结构中,因此可以在
strcpy
之前完成初始化。但是您必须在两个char数组之后声明UDSData
。