IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Описание модулей, Си
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Объясните пожалуйста как нужно использовать модули в Си?
Я создаю файл к примеру List.h в нем пишуб к примеру:
#ifndef List_h
#define List_h
typedef
struct _elem {

int info;
struct _elem *next;

} elem, *pt;

extern int getelem(char *elname);
extern void addtobegin(pt *list, int info);
extern void addafter(pt listel, int info);
extern void addtoend(pt *list, int info);
extern void addbefore(pt listel, int info);
extern void delfirstel(pt *list);
extern void dellastel(pt *list);
extern void delel(pt *list, pt el);
extern void delbefore(pt *list, int info);
extern void delafter(pt *list, int info);
extern void printlist(pt list);
extern void checkel(pt list, int info);
extern void listclear(pt *list);
extern void showmenu();

#endif

Потом создаю файл List.c, где описываю все функции:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include "List.h"
typedef
struct _elem {

int info;
struct _elem *next;

} elem, *pt;
...


И в основном файле программы пишу:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include "List.h"
int main() {...
При компиляции в Dev c++ пишет, что неопределенное обращение к функциям....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Почему прототипы описаны как extern? Попробуй убрать это слово... Это первое. Второе - зачем ты ту же самую структуру определяешь и в *.H файле, и в *.C файле? Из *.С файла убери ее определение...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


Спасибо, но выдает те же самые ошибки: Linker error undefined reference to название процедуры
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






А ты подключил свой C-файл к проекту?

То, что ты сделал include файла *.H, это прекрасно, и это помогает компилятору откомпилировать основную программу (так как компилятору достаточно знать прототип функции, а не ее определение).

А вот линкер поднимает тревогу, потому как он должен получить уже все модули откомпилированными в OBJ-файлы, чтобы из них собрать EXE... А у тебя как видно есть только ОBJ основного файла, а LIST.OBJ не создался?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Юрий

Репутация: -  0  +


при компиляции создаются файлы *.o *.obj нету.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
при компиляции создаются файлы *.o
Да какая разница, что создается при компиляции? У тебя может и *.o, у других obj ... Что за привычка, основное не заметить, и начать придираться к малому? Я вопрос задал: ты C-файл к проекту подключил?
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 22.09.2020 15:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name