Ciao a tutti, ho un pproblema con due librerie che includono le stesse funzioni!
ho provato ad usare le direttive al preprocessore come ifndef e endif ....ma il compilatore mi da sempre il solito errore:
/tmp/ccYm367G.o: In function `Socket':
socketDatagram.c:(.text+0x0): multiple definition of `Socket'
/tmp/ccme103T.o:socketStream.c:(.text+0x0): first defined here
/tmp/ccYm367G.o: In function `Bind':
socketDatagram.c:(.text+0x74): multiple definition of `Bind'
/tmp/ccme103T.o:socketStream.c:(.text+0x74): first defined here
/tmp/ccYm367G.o: In function `Setsockopt':
socketDatagram.c:(.text+0x2af): multiple definition of `Setsockopt'
/tmp/ccme103T.o:socketStream.c:(.text+0x28e): first defined here
/tmp/ccYm367G.o: In function `Close':
socketDatagram.c:(.text+0x331): multiple definition of `Close'
/tmp/ccme103T.o:socketStream.c:(.text+0x310): first defined here
collect2: ld returned 1 exit status
i due file .h contengono in parte le stesse funzioni
socketStream.h
#ifndef __BASELIB_H__
#define __BASELIB_H__
//definisco librerie di base..
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <errno.h>
#endif
//definisco librerie aggiuntive
#include<signal.h>// per i segnali...
#include<netinet/in.h> //definiscono la struttura degli indirizzi e funzione del tipo ntohl
#include<arpa/inet.h>// tipi e funzioni per trattare indirizzi ip.
#include<sys/time.h>// necessaria per la funz select...contiene alcune utilita`
#include<sys/select.h> // funzione select..
#include <fcntl.h>
#ifndef __BASEFUN__
#define __BASEFUN__
int Socket(int domanin, int type, int protocol);
int Bind(int sockfd, const struct sockaddr* serv_addr, socklen_t addrlen);
int Close(int fd);
int Setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);
#endif
socketDatagram.h
#ifndef __BASELIB_H__
#define __BASELIB_H__
//definisco librerie di base..
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <errno.h>
#endif
#ifndef __BASEFUN__
#define __BASEFUN__
int Socket(int domanin, int type, int protocol);
int Bind(int sockfd, const struct sockaddr* serv_addr, socklen_t addrlen);
int Close(int fd);
int Setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen);
#endif
vengono incluse entrambe in un file che rappresenta il server...come mai ifned non mi impedisce di duplicare il codice? ..cosa sbaglio?
Grazie in Anticipo per la vostra risposta!!!