1

我有以下用 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()输入到结构中。UDS1UDS2

4

1 回答 1

2

您几乎可以肯定使用的是早期的编译器标准,例如 C89,它不允许混合声明和代码。您需要item在代码块的开头附近声明。像这样的东西:

char UDS1Temp[16], UDS2Temp[16];
struct UDSData item = {UDS1Temp, UDS2Temp};

strcpy(UDS1Temp, UDS1);
strcpy(UDS2Temp, UDS2);
UDSCodes[UDSTotal++] = item

由于您只是将指针放入结构中,因此可以在strcpy. 但是你必须在两个 char 数组UDSData 之后声明。

于 2013-04-10T09:13:34.473 回答