The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Небольшая проблемма с множественным инклюдом .h файла"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Небольшая проблемма с множественным инклюдом .h файла"
Сообщение от Simps Искать по авторуВ закладки(ok) on 08-Июн-04, 11:17  (MSK)
Пишу прогу. Для порядка разнощу функции по смыслу в разные .с файлы. Есть один глобальный .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 файле ...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Небольшая проблемма с множественным инклюдом .h файла"
Сообщение от Arifolth Искать по авторуВ закладки(ok) on 08-Июн-04, 11:56  (MSK)
>Пишу прогу. Для порядка разнощу функции по смыслу в разные .с файлы.
>Есть один глобальный .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 файле ...


попробуй так:
#ifndef _UNH_H_
#define _UNH_H_ 1

...... все мясо ......

#endif
мож помож =)
должно работать - у мя работает
остальное - шаманство
можно =) перед компиляцией make clean - чтоб ничё старого не осталось

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Небольшая проблемма с множественным инклюдом .h файла"
Сообщение от Simps Искать по авторуВ закладки(ok) on 08-Июн-04, 12:14  (MSK)
>>Пишу прогу. Для порядка разнощу функции по смыслу в разные .с файлы.
>>Есть один глобальный .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 файле ...
>
>
>попробуй так:
>#ifndef _UNH_H_
>#define _UNH_H_ 1
>
>...... все мясо ......
>
>#endif
>мож помож =)
>должно работать - у мя работает
>остальное - шаманство
>можно =) перед компиляцией make clean - чтоб ничё старого не осталось
>

Не катит ...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Небольшая проблемма с множественным инклюдом .h файла"
Сообщение от klalafuda emailИскать по авторуВ закладки on 08-Июн-04, 12:41  (MSK)
>
>Не катит ...

еще бы это да покатило..

загляните в "Язык C за 21 день для чайников" или в этом духе и обратите внимание на такую вещь, как "extern" при описании переменных в заголовочных файлах.

// wbr

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Небольшая проблемма с множественным инклюдом .h файла"
Сообщение от Simps Искать по авторуВ закладки(ok) on 08-Июн-04, 14:02  (MSK)
>>
>>Не катит ...
>
>еще бы это да покатило..
>
>загляните в "Язык C за 21 день для чайников" или в этом
>духе и обратите внимание на такую вещь, как "extern" при описании
>переменных в заголовочных файлах.
>
>// wbr

Всем спасибо все свободны

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру