所以我的程序不会编译,我认为它是因为我使用了嵌套结构。它说我需要检查我的库包括。问题是,我不知道要包括什么:所以无论如何,请帮助我! :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);
}
答案 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;
对于函数,这意味着函数体未被编译,或者它驻留在未链接到可执行文件的库中。