所以这是我的程序的一部分,我无法调用函数,我真的需要一些帮助。它基本上是选择任一功能并输入数据和 以后打印那些数据。我做错了什么?请帮忙,我一直在
“[链接器]引用
Customer_Record()'" , [Linker error] undefined reference to
Car_Record()
”和“ld返回1退出状态”
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
void Customer_Record(), Car_Record();
int num;
struct Customer {
char customer_ID[20];
int license;
char address[20];
int phone;
char email[20];
} cust;
struct car {
int regno[20];
char model[20];
char colour[10];
} car;
main() {
printf(" Enter 1 to go to Customer Record \n\n");
printf(" Enter 2 to go to Car Record \n\n");
scanf("%d", &num);
if (num = 1) {
Customer_Record();
} else if (num = 2) {
Car_Record();
} else {
printf("Invalid Number");
}
system("cls");
void Customer_Record(); {
printf("********CUSTOMER RECORD********"); /* accepts into*/
printf("\nEnter the name of the customer ");
scanf("%s", &cust.customer_ID);
printf("Enter the license number of the customer ");
scanf("%d", &cust.license);
printf("Enter the address of the customer ");
scanf("%s", &cust.address);
printf("Enter the cell phone number of the customer ");
scanf("%d", &cust.phone);
printf("Enter the email address of the customer ");
scanf("%s", &cust.email);
}
void Car_Record(); {
printf("********CAR RECORD********");
printf("\nEnter the car's registration number ");
scanf("%d", &car.regno);
printf("Enter the car's model ");
scanf("%s", &car.model);
printf("Enter the colour of the car ");
scanf("%s", &car.colour);
}
getchar();
getchar();
}
答案 0 :(得分:6)
不要像这样嵌套你的功能。 Customer_Record()
和Car_Record()
的定义应为<{1}}之外的 。您也需要从这些函数的定义中取main()
。
尝试更好地格式化代码 - 从长远来看,这将有很大帮助。
答案 1 :(得分:2)
你在main的末尾错过了一个},编译器认为你的函数声明在main函数内。
从函数中删除尾随分号。例如:
void Car_Record();
{
到
void Car_Record()
{
没有必要使用分号。
答案 2 :(得分:1)
我已经编制了一个包含程序所有问题的列表。这是:
if语句在使用比较运算符=
时正在使用赋值==
运算符。例如,更改以下内容:
if (num = 1) {
到
if (num == 1) {
这也会出现在else
声明中。
在main中定义函数也是不正确的。您必须在主要子句中定义外部这些块。你已经将main上面的函数原型化了,现在你必须在main下面定义它们。另外,在定义函数时,参数列表后面不应该有分号;这在语法上是错误的。
以下是建议。您正在将此代码编译为C ++,但这是使用C函数/头编写的。要将其转换为C ++,请执行以下更改:
更改标题: stdio.h,conio.h,stdlib.h;这些都是C风格的标题。基本上所有以“.h”结尾的标题都是C风格的标题。 C ++有自己的I / O库,因此它的C等效过时。改为包括以下标题:
#include <iostream>
#include <cstdlib>
我遗漏了其他标题,因为您似乎只使用printf
/ scanf
和system
,相当于C ++的iostream
和cstdlib
标题已经拥有。例如,iosteam的std::cout
和std::cin
。相当于getchar
的是std :: cin.get()`。
主要返回int:在标准C ++中,您无法忽略返回类型。将main的返回类型指定为int
,但您不必将return 0
放在最后(这是隐含的)。
如果你想查找C ++函数和容器(比如std::cout
/ std::cin
),this reference会有很多帮助。