Объясните пожалуйста как нужно использовать модули в Си?
Я создаю файл к примеру 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
#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>При компиляции в Dev c++ пишет, что неопределенное обращение к функциям....
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include "List.h"
int main() {...
Почему прототипы описаны как extern? Попробуй убрать это слово... Это первое. Второе - зачем ты ту же самую структуру определяешь и в *.H файле, и в *.C файле? Из *.С файла убери ее определение...
Спасибо, но выдает те же самые ошибки: Linker error undefined reference to название процедуры
А ты подключил свой C-файл к проекту?
То, что ты сделал include файла *.H, это прекрасно, и это помогает компилятору откомпилировать основную программу (так как компилятору достаточно знать прототип функции, а не ее определение).
А вот линкер поднимает тревогу, потому как он должен получить уже все модули откомпилированными в OBJ-файлы, чтобы из них собрать EXE... А у тебя как видно есть только ОBJ основного файла, а LIST.OBJ не создался?
при компиляции создаются файлы *.o *.obj нету.