C编译器无意义错误?

C编译器无意义错误?,c,struct,compiler-errors,strcpy,C,Struct,Compiler Errors,Strcpy,我用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. strcp

我用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'
1>(112):错误C2143:语法错误:缺少“;”在“类型”之前
1> (113):错误C2065:“项”:未声明的标识符

1> 您几乎肯定在使用早期的编译器标准,如C89,它不允许混合声明和代码。您需要在代码块开头附近声明
。大概是这样的:

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

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

由于您只是将指针放入结构中,因此可以在
strcpy
之前进行初始化。但是您必须在两个字符数组之后声明
UDSData

第112行对我来说没有多大意义,但我不是C的最新版本。您使用的是哪种C标准,UDSData是什么类型?听起来编译器没有找到这种类型的
UDSData
。它的定义正确吗?(
include
d头,无循环依赖项等)?@KirilKirov是的,此类型先前已定义。正如我所提到的,如果我在结构中用UDS1替换UDS1Temp,用UDS2替换UDS2Temp,效果很好。代码是否太长?如果我们有完整的代码,并且我们可以自己编译一些东西,我们将更容易帮助您。@KirilKirov它非常庞大,需要非常专门的输入才能正常工作。。。否则我会发布更多。