PDA

Visualizza la versione completa : [C] Header file e undefined reference


Metallica
10-10-2008, 12:52
Allora sto scrivendo delle funzioni in C per un progetto che ho da fare.
Il tutto è composto da 3 file: main.c stdinmio.c e stdinmio.h. Nei due file .c è incluso il file .h
Ecco il codice:


/*File: main.c*/
#include <stdio.h>
#include <stdlib.h>
#include "stdinmio.h"

int main(int argc, char *argv[])
{
char buf[MAX_USER_LEN];
memset(buf, '\0', MAX_USER_LEN);
readStdIn(buf);
}



/* File: stdinmio.h */
#ifndef HEADER
#define HEADER

#define MAX_USER_LEN 16
void readStdIn(char *buffer);

#endif



/* File: stdinmio.c*/
#include "stdinmio.h"
void readStdIn(char *buffer)
{
// ... codice ...
}


A rigor di logica mi pare corretto, ma il compilatore mi dice:
[Linker Error] undefined reference to `readStdIn'
Idee???
PS: sto usando wxDev-C++

sotoli
10-10-2008, 13:46
Se nel file main.c includi stdinmio.h non fai altro che includere la dichiarazione della funzione readStdIn ma non la definizione che invece si trova nel file stdinmio.c.

Nel file main.c devi includere stdinmio.c al posto di stdinmio.h.

Metallica
12-10-2008, 15:06
Originariamente inviato da sotoli
Se nel file main.c includi stdinmio.h non fai altro che includere la dichiarazione della funzione readStdIn ma non la definizione che invece si trova nel file stdinmio.c.

Nel file main.c devi includere stdinmio.c al posto di stdinmio.h.
Sì, infatti così non mi dà problemi. Stilisticamente parlando però non ho mai visto includere file .c in progetti degni di tale nome :|

oregon
12-10-2008, 15:28
No ... non si includono i file .c ... :madai!?:

Semmai, indica al tuo compilatore (tramite un progetto o un make file) che hai due file sorgenti .c da compilare e linkare.

Metallica
13-10-2008, 21:39
Originariamente inviato da oregon
No ... non si includono i file .c ... :madai!?:

Semmai, indica al tuo compilatore (tramite un progetto o un make file) che hai due file sorgenti .c da compilare e linkare.
ecco appunto...

Loading