Δημοσιεύτηκε: 19 Σεπ 2011, 19:23
Garrus έγραψε:οκ πχ σε ενα προβλημα οπου απαιτουνται λιστες και κομβοι θα εγραφα:
program.c file
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include "lists.h"
int main(void){
//blah blah
}
lists.h file
- Κώδικας: Επιλογή όλων
struct node{
// elements
}
struct node foo(){
//blah blah
}
...
Όχι, στο list.h δεν βάζουμε ορισμούς συναρτήσεων, μονάχα τα πρότυπά τους.
Π.χ...
- Κώδικας: Επιλογή όλων
// ========================================================
// File: list.h
// ========================================================
/* Πρόσθετοι Τύποι Δεδομένων */
typedef struct list {
...
} List;
/* Πρότυπα Συναρτήσεων */
#ifndef _LIST_C_ // εξαίρεση από το: list.c
extern List *list_new( ... );
#endif
#ifndef _MAIN_C_ // εξαίρεση από το: main.c
extern void foo( ... );
#endif
- Κώδικας: Επιλογή όλων
// ========================================================
// File: list.c
// ========================================================
#define _LIST_C_ // χρησιμοποιείται στο: list.h
#include "list.h"
List *list_new( ... ) // ορισμός της foo()
{
...
foo( ... ); // η foo() έχει οριστεί στο: main.c
}
- Κώδικας: Επιλογή όλων
// ========================================================
// File: main.c
// ========================================================
#define _MAIN_C_ // χρησιμοποιείται στο: list.h
#include <stdio.h>
#include "list.h"
// ------------------------------------------------------------------------
void foo( ... ) // ορισμός της foo()
{
...
}
// ------------------------------------------------------------------------
int main( void )
{
List *list = NULL;
list = list_new( ... ); // η list_new() έχει οριστεί στο list.c
...
}