Пишу прогу. Для порядка разнощу функции по смыслу в разные .с файлы. Есть один глобальный .h файл в котором все определения (в остальных файлах его инклюдю). Так вот ... И вроде бы в моем .h файле прописано
#ifndef _UNH_H_
#define _UNH_H_
...... все мясо ......
#endif
Но в итоге имею
gcc -c -g -O2 -Wall nbserver.c
gcc -c -g -O2 -Wall sockhelp.c
gcc -c -g -O2 -Wall signal.c
gcc -c -g -O2 -Wall shmstuff.c
gcc -g -O2 -Wall -static -o nbserver nbserver.o sockhelp.o signal.o shmstuff.o
sockhelp.o: In function `atoport':
/home/simps/wifip/newwifim/sockhelp.c:6: multiple definition of `shared_mem'
nbserver.o:/home/simps/wifip/newwifim/nbserver.c:3: first defined here
signal.o: In function `handle_signal':
/home/simps/wifip/newwifim/signal.c:3: multiple definition of `shared_mem'
nbserver.o:/home/simps/wifip/newwifim/nbserver.c:3: first defined here
shmstuff.o: In function `shmsock_answer':
/home/simps/wifip/newwifim/shmstuff.c:3: multiple definition of `shared_mem'
nbserver.o:/home/simps/wifip/newwifim/nbserver.c:3: first defined here
gmake: *** [nbserver] Ошибка 1
Всю голову поломал уже ... Обьясню зачем делаю ... Допустим есть такое определение
void *shared_mem = (void *) 0;
struct shared_use_st *shared_stuff;
int shmid;
struct shared_use_st {
int frompid;
int sdes;
int type;
char some_text[BUFSIZ];
};
Пошел по пути .h файла когда обломался как юзать *shared_stuff в другом .c файле ...