Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Суть #include

12K
05 мая 2008 года
Sholah_Weras
99 / / 04.12.2007
Доброе время суток!
Столкнулся с такой необходимостью - узнать, как работает деректива #include SomeFile.h, а то с гвардами умаялся.
Не просветите (в рунете ничего путного не нашел)?

Заранее благодарен
360
05 мая 2008 года
P*t*
474 / / 15.02.2007
Насколько я понимаю #include просто вставляет указанный файл в текст программы.
(Если это C - C#-ом не пользовался)
3
05 мая 2008 года
Green
4.8K / / 20.01.2000
Цитата: Sholah_Weras

Не просветите (в рунете ничего путного не нашел)?


Лентяй.
Google: директива #include
Первая же ссылка: http://www.languagec.info/include.php

6.6K
05 мая 2008 года
Ordos
105 / / 02.11.2007
Цитата:
(Если это C - C#-ом не пользовался)


А в C# и нет #include :о)

12K
05 мая 2008 года
Sholah_Weras
99 / / 04.12.2007
Цитата: P*t*
Насколько я понимаю #include просто вставляет указанный файл в текст программы.
(Если это C - C#-ом не пользовался)



Цитата: Green
Лентяй.
Google: директива #include
Первая же ссылка: http://www.languagec.info/include.php



Это было из без гугла понятно.

Интересует правила иерархии подлючения как в .h так и в.cpp файлы. Почему, например, невозможны перекрестные инклюды файлов 1.h и 2.h, а в 2.cpp можно свободно инклюдить 1.h?

11
05 мая 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Sholah_Weras
Это было из без гугла понятно.

Интересует правила иерархии подлючения как в .h так и в.cpp файлы. Почему, например, невозможны перекрестные инклюды файлов 1.h и 2.h, а в 2.cpp можно свободно инклюдить 1.h?



если используешь в срр определения из *.h тогда подключаешь его
если в подкоченных *.h уже есть ссылка на другие *.h тогда другие не подключаешь

353
05 мая 2008 года
Nixus
840 / / 04.01.2007
Цитата: Sholah_Weras

Интересует правила иерархии подлючения как в .h так и в.cpp файлы. Почему, например, невозможны перекрестные инклюды файлов 1.h и 2.h, а в 2.cpp можно свободно инклюдить 1.h?


Везде одни и теже правила. Ты что-то путаешь или у тебя особый компилятор.

9.4K
05 мая 2008 года
AIGrifon
165 / / 13.11.2007
Цитата: Sholah_Weras

Интересует правила иерархии подлючения как в .h так и в.cpp файлы. Почему, например, невозможны перекрестные инклюды файлов 1.h и 2.h, а в 2.cpp можно свободно инклюдить 1.h?



А ты сам как думаешь? Смотри, если в 1.h подключаем 2.h и наоборот, то при построении полного текста произойдет зацикливание: в файл 1.h включится текст с дерективой #include 1.h и потребуется включать файлы снова и снова до бесконечности.

Для того, чтобы такого избежать используется либо:

[highlight=C]
#ifndef FILENAME
#define FILENAME
...
#endif
[/highlight]

либо просто:
[highlight=C]
#pragma once
[/highlight]

12K
05 мая 2008 года
Sholah_Weras
99 / / 04.12.2007
2 AIGrifon
Я этого не знал. Спасибо.
9.4K
05 мая 2008 года
AIGrifon
165 / / 13.11.2007
Цитата: Sholah_Weras
2 AIGrifon
Я этого не знал. Спасибо.



Тогда советую дополнительно прочитать или перечитать о работе препроцессора и директивах (хотя бы include и группы define).

Вот, например:

http://club.shelek.ru/viewart.php?id=114

12K
06 мая 2008 года
Sholah_Weras
99 / / 04.12.2007
Прочитал по ссылке:

"По умолчанию препроцессор не создает нового файла на диске или другом носителе - он выполняет свои подстановки, соответствующие директивам препроцессора и сразу начинается этап компиляции. Но, можно так настроить вашу среду программирования, что вы получите файл - результат работы препроцессора. Содержимое этого файла будет соответствовать написанному вами коду, но в местах, где у вас находились директивы препроцессора уже будут находиться вставленные вместо них соответствующие участки."

А как мне настроить среду VC++(6), чтобы я смог посмотреть этот "конечный" заголовок?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог