Почему я получаю ошибку «дубликат символа» для моих функций в C? - PullRequest
0 голосов
/ 15 марта 2020

У меня есть три C файла, main.c, function1.c и function2.c. Я компилирую их, используя gcc -o main main.c function1.c function2.c. У меня есть вспомогательная функция helper(), определенная в function1.c. Так что function1.c выглядит так:

void helper();

void function() {
...
}

void helper() {
...
}

Однако, когда я пытаюсь определить helper() таким же образом в function2.c, это выдает мне ошибку "duplicate symbol '_helper'". Я предполагаю, что это потому, что я скомпилировал function1.c и function2.c вместе, поэтому function2.c знает об определении helper() в function1.c, но я не могу вызвать helper() в function2.c. Я также не хочу определять helper() в своем собственном файле, потому что в итоге я могу написать много таких вспомогательных файлов. Что было бы идеально, если бы у меня был helper.c файл, содержащий функции helper1(), helper2(), et c, все они доступны с function1.c и function2.c. Кто-нибудь знает, как это сделать, или лучшую альтернативу?

1 Ответ

0 голосов
/ 18 марта 2020

Нет необходимости реализовывать одну и ту же функцию дважды

Просто внедрите ее в function1.c

void helper() {
...
}

В function2.c просто объявите ее без реализации

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