无法编译:嵌套结构

时间:2014-08-16 18:58:55

标签: c struct nested

所以我的程序不会编译,我认为它是因为我使用了嵌套结构。它说我需要检查我的库包括。问题是,我不知道要包括什么:所以无论如何,请帮助我! :d

有三个错误:

> [Linker error] PROJECT.o:PROJECT.c:(.text+0x47a): undefined reference to `place' 
   collect2: ld returned 1 exit status 
   [Error] [PROJECT.exe] Error 1 (if this is the only error: please check your library includes) 

这是我的代码:

typedef struct{
    int thick, thin;
    int reds, bbqs, creams, pestos;
    float pepperoni, pork, mball, tuna, chicken, ham, bacon, shrimp;
    float mozz, cheddar, ricotta;
    float bellpep, redon, tom, olive, pine, mush;
}TOPP;

typedef struct{
    char name[128], address[128];
    double contact;
    int delivered;
}CUSDET;
typedef struct{
    int pres;
    int qtyordered;
    char name[128];
    char desc[128];
    float price10, price14, price18;
}PIZZA;
PIZZA prem[50]={0,0,'\0','\0',0,0,0};
typedef struct{
    float total, totalsum;
    TOPP myo10[10], myo14[10], myo18[10];
    CUSDET cus; 
}ORDZ;
ORDZ temp, *pt;
ORDZ order[90], *pol;
TOPP *pm;
CUSDET *pc;
PIZZA *ppm;`

然后我在这个函数中使用了那些:

void cusdetails(){
pc=&temp.cus;
int a=0, a1;
do{
 system("cls");
    printf("RMR PIZZA - Customer Page.\n\n");
    printf("Welcome to RMR PIZZA!\n");
    printf("Enter Name: ");
    scanf(" %[^\n]s", &pc->name);
    printf("Enter Address: ");
    scanf(" %[^\n]s", &pc->address);
    printf("Enter Contact Number: ");
    scanf("%lf", &pc->contact);
    printf("\n\n Your details are as follows:\n\n");
    printf("Name: %s\n", pc->name);
    printf("Address: %s\n", pc->address);
    printf("Contact Number: %0.0lf\n", pc->contact);
}while(a==2);   
}

2 个答案:

答案 0 :(得分:1)

您的错误与嵌套结构无关。错误:

Linker error] PROJECT.o:PROJECT.c:(.text+0x47a): undefined reference to `place' 
collect2: ld returned 1 exit status 

告诉你它找不到上面未显示的部分代码中使用的命令/函数place。很可能你已经定义了一个名为place的函数,并且在定义出现之前在代码中使用它(或者它是你忘记包含头文件的其他库(或文件)中的函数)。无论哪种方式,您都试图使用place并且链接器告诉您它不知道您在说什么。显示引用place的代码以获得更多帮助。

答案 1 :(得分:1)

错误与您的代码无关。

链接器声明标识符(函数或变量)已声明并使用但在目标文件中缺失。

如果名为place的全局变量声明为extern int place;并且代码中没有任何地方是实际实例int place;

,则可能会发生这种情况

对于函数,这意味着函数体未被编译,或者它驻留在未链接到可执行文件的库中。