Так что это часть моей программы, у меня проблемы с вызовом функций, и мне действительно нужна помощь. Это в основном, чтобы выбрать любую функцию и ввести данные и
позже распечатайте эти данные. Что я делаю не так? Пожалуйста, помогите, я продолжаю получать
«[Linker] ссылка на
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();
}
Не вкладывайте свои функции так. Определения Customer_Record()
а также Car_Record()
должно быть вне из main()
, Вам нужно взять ;
от определения этих функций тоже.
Попробуйте лучше отформатировать код — это очень поможет в долгосрочной перспективе.
Вы пропускаете} в конце main, компилятор считает, что ваши объявления функций находятся внутри функции main.
Удалите конечную точку с запятой из вашей функции. Пример:
void Car_Record();
{
в
void Car_Record()
{
Эта точка с запятой не нужна.
Я составил список всех проблем с вашей программой. Вот:
Ваши заявления if используют назначение =
оператор, когда они должны использовать оператор сравнения ==
, Так, например, измените следующее:
if (num = 1) {
в
if (num == 1) {
Это также происходит в вашем else
заявление также.
Также неправильно определять функции внутри main. Вы должны определить эти блоки вне основной пункт. Вы уже создали прототип функций выше main, теперь вы должны определить их ниже main. Кроме того, у вас не должно быть точки с запятой после списка параметров при определении функций; это синтаксически неправильно.
Следующий совет. Вы компилируете этот код как C ++, но он написан с использованием функций / заголовков C. Чтобы преобразовать его в C ++, сделайте следующие изменения:
Измените ваши заголовки: stdio.h, conio.h, stdlib.h; это все заголовки в стиле C. По сути, все заголовки, оканчивающиеся на «.h», являются заголовками в стиле C. C ++ имеет собственную библиотеку ввода / вывода, что делает его эквивалент C устаревшим. Вместо этого включите следующие заголовки:
#include <iostream>
#include <cstdlib>
Я пропустил дополнительные заголовки, потому что кажется, что вы используете только printf
/scanf
а также system
, эквивалент которого C ++ iostream
а также cstdlib
Заголовки уже обладает. Например, std::cout
а также std::cin
для iosteam. И эквивалент getchar
is std :: cin.get () `.
Main возвращает int: В стандартном C ++ вы не можете исключить тип возвращаемого значения. Укажите тип возврата main как int
, но вы не должны ставить return 0
в конце (это неявно).
Если вы хотите посмотреть функции и контейнеры C ++ (например, std::cout
/std::cin
), эта ссылка очень помогает