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

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

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

Похожие вопросы