У меня есть несколько библиотек, которые я использую в модулях той же системы. Моя проблема заключается в том, что когда я # включаю в h-файлы, наконец, в системе он говорит «неопределенные ссылки на ...» различные функции модуля, которые включаются дважды, один раз в каждом отдельном модуле. Вероятно, из-за двойной декларации, как мне ее управлять?Модульность системы в c
У меня есть "rialtor.h", в котором:
#include <stdbool.h>
#include "apartment.h"
#include "offer.h"
У меня есть "client.h", в котором:
#include <stdbool.h>
#include "apartment.h"
#include "offer.h"
У меня есть "system.c", в котором:
#include "rialtor.h"
#include "client.h"
Если просто включить дополнительный заголовок в исходный файл C, то компоновщик будет жаловаться на неопределенную ссылку, если в противном случае это не так, тогда у вас должно быть одно или несколько определений функций в этом заголовке (в отличие от просто функции прототипы). Это будет очень плохая форма, но не корень проблемы. Нам нужно увидеть [mcve], чтобы дать вам полный ответ. –
Обратите внимание, что несколько совместимых * деклараций * одной и той же функции или переменной полностью допустимы в C. Это, безусловно, не ваша проблема. Множественные * определения * одной и той же функции или переменной не допускаются, но это не то, о чем жалуется компоновщик. –