Squeak.ru - шаблоны программирования

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

Я новичок в 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'

28.05.2019

  • Да, конфликтующие типы, int using_name(), затем char* using_name(). 28.05.2019
  • Это надуманный пример, в котором не используется возвращаемое значение — оно в любом случае глобальное — но определение и объявление должны совпадать. 28.05.2019
  • У него есть два возвращаемых типа, а также два типа аргументов: он объявляется без аргументов, а затем вызывается с аргументом char *. 28.05.2019

Ответы:


1

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

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

char *using_name()

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

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

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

28.05.2019
  • Это решило конфликтную проблему, но теперь, когда я запускаю скрипт, я ввожу имя, и первая функция повторяется, прежде чем перейти к следующей функции. Не могли бы вы помочь еще раз, пожалуйста 28.05.2019
  • Это потому, что вы вызываете using_name() дважды. Вы вызываете его в main() и снова в call_func(). 28.05.2019
  • Это должно быть просто printf("Hello %d\n", name); 28.05.2019
  • Бармар в президенты! 28.05.2019
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...