#c #function #types
#c #функция #типы
Вопрос:
У меня возникли проблемы с настройкой кода для функции. Отображается сообщение об ошибке: конфликтующие типы.
Поэтому я думаю, это потому, что мой возвращаемый тип отличается от значения в параметре. Итак, мне было интересно, возможно ли иметь разные типы значений в параметре и как исправить этот код.
//prompt user to enter the credit card number and print it on screen
long get_credit()
{
long credit_number = get_long("Number: ");
//printf("Number: %lin",credit_number); //debugging
return credit_number;
}
//digits lengther
int get_digit(long credit_number)
{
long credit = credit_number; //length of the number of digits given by the user
int length = 0;
while(credit != 0)
{
credit = credit/10 ;
length ;
}
return length;
}
Это сообщение об ошибке, которое оно мне показывает.
credit_v2.c:154:5: error: conflicting types for 'get_digit'
int get_digit(long credit_number)
^
credit_v2.c:7:5: note: previous declaration is here
int get_digit(void); //calculate the number of digits
^
Еще раз, спасибо вам, ребята, за всю помощь!
Комментарии:
1. измените строку
int get_digit(void);
наint get_digit(long credit_number);
. Это строка 7 из credit_v2.c
Ответ №1:
Вы получаете эту ошибку, потому что прототип функции не соответствует определению.
Как указано в сообщении об ошибке, вы объявили функцию как int get_digit(void);
, то есть функцию , которая не принимает аргументов и возвращает an int
. Однако определение функции показывает, что она принимает один аргумент типа long
.
Вам нужно сделать так, чтобы прототип соответствовал определению.
int get_digit(long credit_number); //calculate the number of digits
Ответ №2:
Измените строку 7 с:
int get_digit(void);
Для:
int get_digit(long credit_number);