Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2015, 12:24   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию порядок #include

скажите есть ли разница в порядке подключения фалов?
например
Код:
#include <f1>
#include <f2>
или
Код:
#include <f2>
#include <f1>
SAMOUCHKA вне форума Ответить с цитированием
Старый 06.08.2015, 12:29   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Зависит от файлов.
Для одних есть, для других нет.
waleri вне форума Ответить с цитированием
Старый 06.08.2015, 12:32   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Зависит от файлов.
Для одних есть, для других нет.
А можно подробнее? где про это написано? Я в литературе такого не видел.
SAMOUCHKA вне форума Ответить с цитированием
Старый 06.08.2015, 13:01   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Нигде.

#include просто вставляет файл на место самого инклуда. Компилятору пофиг что лежит внутри и что из этого выйдет.

Системные файлы обычно можно вставлять в любом порядке, но это не значит, что это верно для всех файлов. Все зависит от содержимого файла.
waleri вне форума Ответить с цитированием
Старый 06.08.2015, 15:52   #5
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
скажите есть ли разница в порядке подключения фалов?
например
Код:
#include <f1>
#include <f2>
или
Код:
#include <f2>
#include <f1>
это если у тебя в этих файлах к примеру классы, то тогда имеет значение
RAFA91 вне форума Ответить с цитированием
Старый 06.08.2015, 16:01   #6
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

У меня имеет значение. Однажды мне понадобилось добавить библиотеку математических функций "math.h". Это было то ли в файле класса объекта, то ли вида.
Так вот, когда я вставлял его первой строкой, программа не компилировалась. Методом тыка узнал, что вставлять надо второй строкой (или позже; там было ещё четыре заголовочных файла "*.h", добавляемых по умолчанию мастером).
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 06.08.2015, 16:42   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
У меня имеет значение. Однажды мне понадобилось добавить библиотеку математических функций "math.h". Это было то ли в файле класса объекта, то ли вида.
Так вот, когда я вставлял его первой строкой, программа не компилировалась. Методом тыка узнал, что вставлять надо второй строкой (или позже; там было ещё четыре заголовочных файла "*.h", добавляемых по умолчанию мастером).
скорее всего там был stdafx.h это предкомпилируемый заголов, он должен быть первым всегда.
Цитата:
это если у тебя в этих файлах к примеру классы, то тогда имеет значение
лучше чтоб эти заголовочники сами подключали то что надо. и не забывать об include guard или pragma once.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.08.2015, 17:55   #8
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
скажите есть ли разница в порядке подключения фалов?
например
Код:
#include <f1>
#include <f2>
или
Код:
#include <f2>
#include <f1>
вместо диррективы вида:
Код:
#include <f1>
компилятор тупо вставит текст файла f1

следовательно, если будет
Код:
#include <f1>
#include <f2>
то сначала будет вставлен текст f1, а затем f2
и аналогично, когда наоборот.

как вы сами считаете есть разница?


часто одни хэдэры цепляют другие. а те - третие.
и может получится, что один и тот же хэдэр пытались прицепить по нескольку раз.
и как бы нет нужды подключать одно и тоже по 10 раз.
что бы этого не происходило,
используют так называется "гварды" (стражники).

простейший пример гварда: в начале любого хэдэра писать:
Код:
#pragma once
тогда компилятор не будет подставлять этот файл,
если ранее он уже был подставлен.

таким образом, в зависимости от самого содержимого файла,
и от наличия в нем гварда,
иногда разница есть, чаще - нету.

считается, что хороший код - когда разницы нет.
например, стандартая библиотека - подрубай что хочешь и как хочешь.

а вот код, когда разница есть - нужно отрывать руки.
исключение составляют "предварительно скомпилированные заголовки",
либо весьма специфичные файлы (всякие там трюки на препроцессоре).

резюмируя:
будет разница или нет, зависит от прямоты рук программиста.
_Bers вне форума Ответить с цитированием
Старый 06.08.2015, 18:12   #9
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

тогда если я подключу несколько классов унаследованных от QDialog у меня несколько раз будет повторятся код из класса QDialog. Правильно я понял?
SAMOUCHKA вне форума Ответить с цитированием
Старый 06.08.2015, 20:32   #10
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
тогда если я подключу несколько классов унаследованных от QDialog у меня несколько раз будет повторятся код из класса QDialog. Правильно я понял?
похоже вы вообще нихрена не читали, что вам пишут.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
include Gtnz8 Общие вопросы C/C++ 3 02.11.2013 11:24
Include Abdukhafiz ASP.NET 0 29.12.2011 17:32
include в include xap4o PHP 4 02.09.2010 12:21
dropdown + include wcp HTML и CSS 0 07.09.2009 20:40
include odi_noki Помощь студентам 14 12.07.2008 13:04