У меня возникли проблемы с настройкой кода для функции. Сообщение об ошибке показывает: конфликтующие типы.
Поэтому я думаю, что это потому, что мой возвращаемый тип отличается от значения в параметре. Поэтому мне было интересно, возможно ли иметь разные типы значений в параметре и как исправить этот код.
//prompt user to enter the credit card number and print it on screen
long get_credit()
{
long credit_number = get_long("Number: ");
//printf("Number: %li\n",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
^
Еще раз спасибо всем ребятам за помощь!
Вы получаете эту ошибку, потому что прототип функции не соответствует определению.
Как говорится в сообщении об ошибке, вы объявили функцию как int get_digit(void);
, то есть функцию, которая не принимает аргументов и возвращает int
. Однако определение функции показывает, что она принимает один аргумент типа long
.
Вам нужно, чтобы прототип соответствовал определению.
int get_digit(long credit_number); //calculate the number of digits
Изменить строку 7 с:
int get_digit(void);
к:
int get_digit(long credit_number);
замените строку
int get_digit(void);
наint get_digit(long credit_number);
. Это строка 7 из credit_v2.c