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;
}
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
У вас в вопросе 2 варианта main.
В первом будет ошибка, во втором нет при сборке командой:
gcc main.c function1.c

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

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

Войти через центр авторизации
Похожие вопросы