Задать вопрос
kan3k1k3n
@kan3k1k3n

Как подключить файл с помощью макроса к другому файлу?

есть код основной программы, которая находит самое частовстречаемое число в массиве:
#include <stdio.h>
#include <stdlib.h>

#define INCLUDE_FUNCTION1
#ifdef INCLUDE_FUNCTION1
#include "function1.c"
#endif

int main() {
    system("chcp 65001");
    int arr[] = {1, 1, 1, 2, 2, 2, 2, 31, 31, 31, 31, 31, 5, 4, 9};
    printf("массив: ");

    for (int i = 0; i < 15; i++)
        printf("%d ", arr[i]);

    printf("\nнаиболее часто встречающееся число: %d\n", findmostfrequentnumber(arr));
    return 0;
}


код для определения функции findmostfrequentnumber:
int findmostfrequentnumber(int arr[]) {
    int maxcount = 0;
    int mostfrequentnumber = 0;

    for (int i = 0; i < 15; i++) {
        int count = 1;
        for (int j = i + 1; j < 15; j++) {
            if (arr[j] == arr[i])
                count++;
        }

        if (count > maxcount) {
            maxcount = count;
            mostfrequentnumber = arr[i];
        }
    }
    return mostfrequentnumber;
}


но при компиляции возникает ошибка: multiple definition of `findmostfrequentnumber'
как мне правильно подключить эту функцию, чтобы она корректно работала в основной программе?

upd:
код основной программы:
#include <stdio.h>
#include <stdlib.h>
#include "function1.h"

int main() {
    system("chcp 65001");
    int arr[] = {1, 1, 1, 2, 2, 2, 2, 31, 31, 31, 31, 31, 5, 4, 9};
    printf("массив: ");

    for (int i = 0; i < 15; i++)
        printf("%d ", arr[i]);

    printf("\nнаиболее часто встречающееся число: %d\n", findmostfrequentnumber(arr));
    return 0;
}

код function1.h:
#ifndef FUNCTION1_H
#define FUNCTION1_H

int findmostfrequentnumber(int arr[]);

#endif

код function1.c:
#include "function1.h"

int findmostfrequentnumber(int arr[]) {
    int maxcount = 0;
    int mostfrequentnumber = 0;

    for (int i = 0; i < 15; i++) {
        int count = 1;
        for (int j = i + 1; j < 15; j++) {
            if (arr[j] == arr[i])
                count++;
        }

        if (count > maxcount) {
            maxcount = count;
            mostfrequentnumber = arr[i];
        }
    }
    return mostfrequentnumber;
}
  • Вопрос задан
  • 93 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unreal Engine + ИИ
    9 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Решения вопроса 1
@res2001
Developer, ex-admin
У вас в вопросе 2 варианта main.
В первом будет ошибка, во втором нет при сборке командой:
gcc main.c function1.c

Чтоб в первом случае не было ошибки нужно собирать командой:
gcc main.c
т.к. function1.c включается в main.c с помощью include и его не нужно повторно давать компилятору.
Эта команда для сборки второго варианта main не подойдет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
СПЕЦПО Санкт-Петербург
от 230 000 до 350 000 ₽
Uniscan Research Новосибирск
от 140 000 до 200 000 ₽
Базис-Центр Коломна
от 70 000 до 500 000 ₽