Невозможно вернуть параметр функции из-за конфликтующих типов для «функции» в C - PullRequest
0 голосов
/ 28 мая 2019

Я новичок в C и пытаюсь понять, как существуют конфликтующие типы для моей функции "using_name".

Я также не понимаю, почему я должен включить '*', чтобы назвать функцию 'using_name ()'. Это потому, что я храню значение в адресе функции?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int using_name(), call_func(char name[20]);
char name[20];

int main ()
{
    using_name();
    call_func(name);

    return 0;
}

char* using_name()
{
        printf("What is your name: ");
        scanf("%s", name);
        printf("\n Your name is %s", name);

        return name;
}

int call_func(char name[20])
{
    printf("Hello %s", using_name(name));

}

Ошибка: конфликтующие типы для 'using_name'

1 Ответ

1 голос
/ 28 мая 2019

Типы возврата и аргумента в прототипе функции в начале программы должны соответствовать фактическим типам, когда функция будет определена позже.

Поскольку using_name() определяется как:

char *using_name()

Вам нужно изменить предыдущий прототип на:

char *using_name();
int call_func(char name[20]);

Другое решение - просто поместить определения функций в начало программы. Прототипы нужны только для функций, которые используются до их определения, или функций, определенных в другом модуле компиляции (хотя эти прототипы обычно помещаются в заголовочный файл).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...