PDA

View Full Version : [C - Compilazione separata]suggerimenti


RaouL_BennetH
14-05-2005, 01:05
Allora, mi sto accingendo a fare il primo programmino composto da più di un file e dalla sola main. Ho ancora molti dubbi e spero che per qualcuno di questi, mi sappiate indirizzare come al solito.

Allora, io stavo pensando di dividerlo così:

1) Header contenente tutte le direttive e tutte le dichiarazioni delle funzioni
2) Il file.c comprendente ovviamente l'header, con la definizione e l'impiego delle funzioni.

Ora, il primo dubbio che ho è questo: ma per richiamare la funzione dichiarata nell'header, mi basta solo la key "extern" davanti alla definzione del .c ?

Per il momento vorrei chiarimenti su questo, poi magari posto gli altri dubbi.

Thx.

RaouL.

beppegrillo
14-05-2005, 01:21
Non devi specificare la clausola extern davanti le funzioni che dichiari in un header, è considerato ridondante.

RaouL_BennetH
14-05-2005, 01:31
Non devi specificare la clausola extern davanti le funzioni che dichiari in un header, è considerato ridondante.

ma infatti io intendevo nel file.c non nell'header. Mi spiego:

mio_header.h


#include <stdio.h>
int funzione(int *mia_fun);


mio_file.c


#include "mio_header.h"
extern int funzione...


E' corretto?

Thx.

RaouL.

cionci
14-05-2005, 01:37
Non serve extern in quel caso...l'header è praticamente già incluso nell'ambiente del file .c

RaouL_BennetH
14-05-2005, 01:38
Grazie :)

Noto con piacere che non sono il solo a quest'ora davanti al pc :D

E per giunta... a studiare :(

Thx... torno fra poco a rompervi, mi raccomando, sto preparando il caffè...

RaouL_BennetH
14-05-2005, 01:45
ecco il primo problema :


prova.c:8: error: initializer element is not constant
prova.c:8: warning: data definition has no type or storage class


e questo è l'header:


#ifndef PROVA
#define PROVA

#include <stdio.h>
#include <termios.h>
#include <ncurses.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <sys/stat.h>


int init(char *nomedispositivo);
WINDOW *framedWin(int h, int w, int y, int x);

#endif

RaouL_BennetH
14-05-2005, 02:10
OMG... dato che non capivo, ho provato a lasciare nell'header solo gli "include", senza niente e mi da lo stesso errore, com'è possibile?

RaouL_BennetH
14-05-2005, 02:16
perchè sono un pirla, ma forse anche un pò stanco... tutto ok, funge, stavo solo sbagliando tutto :D