реклама на сайте
подробности

 
 
> Как подключаются h и с файлы, Чтото не все понятно.
Serega Doc
сообщение Oct 20 2005, 14:00
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 267
Регистрация: 11-11-04
Из: Одесса
Пользователь №: 1 103



Есть main.c и proc.c
в const.h объявляю константы и дефайны

в proc.c выненсены процедуры которые используются в main.c

в proc.c используются константы из const.h

получается что строка
#includ "const.h"
проходит два раза и в main.c и в proc.c.
Как избавится от ошибки.
Компилятор ICC v7
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Oct 24 2005, 07:55
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Никто почему-то не расскажет ещё об одной технике обьявления/определения переменных в хедерах.
Помимо охранных констант, исключающих повторное включение файла иногда бывает удобно в одном файле и определять и обьявлять переменные (экземпляры класса).
Код
#ifndef _xxx_DEF
...
unsigned int My_Int_Var;
...
#else
...
extern unsigned int My_Int_Var;
...
#endif

Константа _xxx_DEF обьявляется только в одном файле *.c, где происходит выделение под них памяти. Все же остальные файлы включающие данный хедер, будут видеть только обьявления.
При желании можно написать макрос, который сделает всё это автоматически.
Go to the top of the page
 
+Quote Post
Old1
сообщение Oct 25 2005, 17:35
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Цитата(IgorKossak @ Oct 24 2005, 10:55)
Никто почему-то не расскажет ещё об одной технике обьявления/определения переменных в хедерах.
Помимо охранных констант, исключающих повторное включение файла иногда бывает удобно в одном файле и определять и обьявлять переменные (экземпляры класса).
Код
#ifndef _xxx_DEF
...
unsigned int My_Int_Var;
...
#else
...
extern unsigned int My_Int_Var;
...
#endif

Константа _xxx_DEF обьявляется только в одном файле *.c, где происходит выделение под них памяти. Все же остальные файлы включающие данный хедер, будут видеть только обьявления.
При желании можно написать макрос, который сделает всё это автоматически.
*

Здесь ИМХО ошибка вкралась, вместо
Код
#ifndef _xxx_DEF

нужно
Код
#ifdef _xxx_DEF

по крайней мере так работает...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Serega Doc   Как подключаются h и с файлы   Oct 20 2005, 14:00
- - beer_warrior   Так называемый защитный код: в .h файле #ifndef ...   Oct 20 2005, 14:14
- - damir2   Оставь один раз #includ "const.h" в mai...   Oct 20 2005, 14:15
- - rezident   1. Используйте условную компиляцию. Т.е. конструкц...   Oct 20 2005, 20:19
- - haker_fox   #ifndef CONST_H //если константа не определена, то...   Oct 20 2005, 23:26
- - GrayCat   Цитата(Serega Doc @ Oct 20 2005, 16:00)Есть m...   Oct 21 2005, 06:03
|- - IgorKossak   Цитата(GrayCat @ Oct 21 2005, 09:03)...Вообще...   Oct 24 2005, 06:50
|- - GrayCat   Цитата(IgorKossak @ Oct 24 2005, 08:50)Цитата...   Oct 24 2005, 07:33
|- - IgorKossak   Цитата(GrayCat @ Oct 24 2005, 10:33)Насколько...   Oct 24 2005, 07:44
|- - -Tумблер-   Цитата(Old1 @ Oct 25 2005, 20:35)Здесь ИМХО о...   Oct 26 2005, 12:33
- - rezident   IgorKossak, понятно что это можно, но для чего это...   Oct 24 2005, 14:55
|- - GrayCat   Цитата(rezident @ Oct 24 2005, 16:55)IgorKoss...   Oct 25 2005, 07:02
- - IgorKossak   Нет, правильно всё-такиКод#ifdef _xxx_DEF т. к. ко...   Oct 26 2005, 14:45


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 04:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.0137 секунд с 7
ELECTRONIX ©2004-2016