2016-04-30 1 views
0

У меня есть несколько библиотек, которые я использую в модулях той же системы. Моя проблема заключается в том, что когда я # включаю в 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" 
+0

Если просто включить дополнительный заголовок в исходный файл C, то компоновщик будет жаловаться на неопределенную ссылку, если в противном случае это не так, тогда у вас должно быть одно или несколько определений функций в этом заголовке (в отличие от просто функции прототипы). Это будет очень плохая форма, но не корень проблемы. Нам нужно увидеть [mcve], чтобы дать вам полный ответ. –

+0

Обратите внимание, что несколько совместимых * деклараций * одной и той же функции или переменной полностью допустимы в C. Это, безусловно, не ваша проблема. Множественные * определения * одной и той же функции или переменной не допускаются, но это не то, о чем жалуется компоновщик. –

ответ

0

Вы ищете не то место. undefined reference - ошибка компоновщика. Вы не включаете все необходимые объектные файлы или библиотеки в командной строке, которая создает ваш исполняемый файл.

+0

вы уверены? потому что все библиотеки есть, и весь заголовок, но я включаю их дважды в некоторые места из-за модульности. Причина, как правило, я знаю, что это компоновщик и материал, который вы сказали, но я обязательно включаю всю необходимую информацию. – KittyT2016

+0

@ KittyT2016, включая заголовок в исходном файле C, просто предоставляет декларации. Это не приводит к автоматическому определению определений объявленных функций и их привязке. –

 Смежные вопросы

  • Нет связанных вопросов^_^