Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Есть желание сократить код, введя сокращенные названия типов. Поэтому создан нижеприведенный файл, который потом "заинклюден" ко ВСЕМ остальным файлам проекта: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Я правильно понимаю, что тем самым у меня сильно разбухает код, ведь директива "#include" рекурсивно вставляет исходных код string, vector и regex во все файлы моего проекта? Какие последствия у такого подхода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 10:49 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, открой для себя Код: plaintext 1. include - текстовая вставка компилятор/линкер дублирование уберут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 10:55 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
SiemarglAlekseySQL, открой для себя Код: plaintext 1. include - текстовая вставка компилятор/линкер дублирование уберут Дублирование то уберут, но мне не в каждом файле даже один раз нужны эти типы данных. Если развивать мой подход, то к каждому файлу по мере роста проекта будет подключена половина стандартной библиотеки + половина библиотеки Qt ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 11:13 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
"подключено" - нет такого термина. говори корректно, иначе непонятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 11:42 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLсоздан нижеприведенный файл, который потом "заинклюден" ко ВСЕМ остальным файлам проекта: Код: plaintext 1. 2. 3. 4. Я правильно понимаю, что тем самым у меня сильно разбухает код, ведь директива "#include" рекурсивно вставляет исходных код string, vector и regex во все файлы моего проекта?Странные пошли люди ... Ведь достаточно открыть один-два нормальных заголовка и увидеть что-то вроде: Код: plaintext 1. 2. 3. 4. Но, конечно, потратить часок на форуме гораздо проще, чем самому разбораться за пять минут. P.S. Время компиляции - да, просядет. Поэтому, лень должна быть обоснована, а не просто лень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 12:32 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Siemargl"подключено" - нет такого термина. говори корректно, иначе непонятно Директива "include" добавляет ("подключает") в исходный текст код, который расположен в указанном файле. Другими словами, итоговый код состоит из двух кусков программы: "подключенного" библиотечного и исходного. Если в исходные тексты программ с помощью include прописать все возможные библиотечные файлы, то исходные тексты по логике должны сильно распухнуть. Вот про это собственно и вопрос: правильно ли я все понимаю и какие еще есть последствия у подобной практики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 12:32 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, больше время компиляции, ну и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 12:47 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВедь достаточно открыть один-два нормальных заголовка и увидеть что-то вроде: Код: plaintext 1. 2. 3. 4. Можно короче Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 12:54 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Dima TBasil A. SidorovВедь достаточно открыть один-два нормальных заголовка и увидеть что-то вроде: Код: plaintext 1. 2. 3. 4. Можно короче Код: plaintext 1. При подобных директивах препроцессор в КАЖДУЮ единицу компиляции включит файлы библиотек только по одному разу. Единицей компиляции в С++ является файл. Другими словами, как я и написал в каждый файл проекта по разу будет подключено куча библиотечных файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 13:48 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLЕсть желание сократить код, введя сокращенные названия типов. Маленький SSD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 18:02 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
alex_kМаленький SSD? Спасибо, поржал:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 18:40 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Dima TBasil A. SidorovВедь достаточно открыть один-два нормальных заголовка и увидеть что-то вроде: Код: plaintext 1. 2. 3. 4. Можно короче Код: plaintext 1. Можно, но не стоит. Эта прагма не является универсальной для всех компиляторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 19:02 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLDima Tпропущено... Можно короче Код: plaintext 1. При подобных директивах препроцессор в КАЖДУЮ единицу компиляции включит файлы библиотек только по одному разу. Единицей компиляции в С++ является файл. Другими словами, как я и написал в каждый файл проекта по разу будет подключено куча библиотечных файлов.И это проблема? Тогда тебе стоит почитать про пре-компиляцию заголовков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 19:04 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
White OwlЭта прагма не является универсальной для всех компиляторов. Назови два, которые её не поддерживают. Древние версии - не в счёт. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 19:12 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovWhite OwlЭта прагма не является универсальной для всех компиляторов. Назови два, которые её не поддерживают. Древние версии - не в счёт. Древние версии как раз "в счет". В больших конторах намного труднее идти в ногу с прогрессом и обновлять не то что компиляторы, но и ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 19:25 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
White OwlДревние версии как раз "в счет". В больших конторах намного труднее идти в ногу с прогрессом и обновлять не то что компиляторы, но и ОС. ЕМНИП, MS VC стал поддерживать эту прагму в версии 2013, то есть пять лет назад. GCC - ещё раньше. Тормозила только SUN Studio и BCC до перехода на clang. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 19:27 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕМНИП, MS VC стал поддерживать эту прагму в версии 2013Согласно вики - с VS2003. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 19:53 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, да нормально, прекомпилируемые заголовки как раз для лечения того что вы боитесь хорошая статейка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 20:59 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovWhite OwlДревние версии как раз "в счет". В больших конторах намного труднее идти в ногу с прогрессом и обновлять не то что компиляторы, но и ОС. ЕМНИП, MS VC стал поддерживать эту прагму в версии 2013, то есть пять лет назад. GCC - ещё раньше. Тормозила только SUN Studio и BCC до перехода на clang. А я вот до сих пор пишу для компилятора: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2018, 21:36 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)AlekseySQL, да нормально, прекомпилируемые заголовки как раз для лечения того что вы боитесь хорошая статейка Честно говоря, статейка не по теме :) Волнует не скорость компиляции (с которой борятся предкомпилируемые заголовки), а разбухание кода из- за добавление ненужных объявлений во все файлы проекта. Из- за этого ощущение, что понижается надежность кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2018, 10:09 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, такс, пойдём от определений что вы называете размером кода? вывод после препроцессора? ну так это бред автор#include" рекурсивно вставляет исходных код string, vector и regex во все файлы моего проекта? макросы если не используются то не вставляются. Вы боитесь что если вы в двух cpp-файлах будете использовать, например, std::vector то его код вставится в объектник к каждому cpp в котором он используется, а потом дубликаты не отрежутся линкёром? надёжность кода зависит от программиста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2018, 10:44 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) Вы боитесь что если вы в двух cpp-файлах будете использовать, например, std::vector то его код вставится в объектник к каждому cpp в котором он используется, а потом дубликаты не отрежутся линкёром? Да, именно этого я и боюсь:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2018, 12:23 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, гугли extern template ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2018, 16:03 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLkealon(Ruslan) Вы боитесь что если вы в двух cpp-файлах будете использовать, например, std::vector то его код вставится в объектник к каждому cpp в котором он используется, а потом дубликаты не отрежутся линкёром? Да, именно этого я и боюсь:) Это совсем копейки. На это следует обращать внимание только если программируешь под что-то намного меньше, чем дешевый смартфон. И если вы просто накидали кучу include<> и не использовали (не инстанцировали) их классы и функции, то их код никуда не вставится и вообще не создастся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2018, 20:25 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL Я правильно понимаю, что тем самым у меня сильно разбухает код, ведь директива "#include" рекурсивно вставляет исходных код string, vector и regex во все файлы моего проекта? Нет, неправильно. AlekseySQLКакие последствия у такого подхода? У такого подхода ужасные последствия. во-первых, не зачем писать такие дурацкие псервдонимы, они только будут путать. using -директивы хватило бы выше крыши. Во-вторых, ты погляди, что ты там понаписал, и подумай, действительно ли ты этого хочешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 00:03 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLSiemarglAlekseySQL, открой для себя Код: plaintext 1. include - текстовая вставка компилятор/линкер дублирование уберут Дублирование то уберут, но мне не в каждом файле даже один раз нужны эти типы данных. Если развивать мой подход, то к каждому файлу по мере роста проекта будет подключена половина стандартной библиотеки + половина библиотеки Qt ... Тебе надо уяснить разницу между объявлением и определением. Также между определением шаблона и его инстанциацией. Также о том, как работает редактор связей (линкер). В общем, все твои страхи -- это просто паранойя невежды. Учи язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 00:06 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLDima Tпропущено... Можно короче Код: plaintext 1. При подобных директивах препроцессор в КАЖДУЮ единицу компиляции включит файлы библиотек только по одному разу. Единицей компиляции в С++ является файл. Другими словами, как я и написал в каждый файл проекта по разу будет подключено куча библиотечных файлов. Ну и что? Шаблонный код например ДАЖЕ КОМПИЛИРОВАТЬСЯ НЕ БУДЕТ, если он не используется реально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 00:10 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovWhite OwlЭта прагма не является универсальной для всех компиляторов. Назови два, которые её не поддерживают. Древние версии - не в счёт. Да её уже все поддерживают, но тем не менее в стандарте её нет.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 00:11 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL... Волнует ... разбухание кода из- за добавление ненужных объявлений во все файлы проекта. Расскажи, что ты подразумеваешь под " разбуханием кода ", дай полное развёрнутое определение. AlekseySQL Из- за этого ощущение, что понижается надежность кода. Вообще полный бред... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 00:14 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)AlekseySQL, гугли extern template да его не поддерживает никто уже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 00:15 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLkealon(Ruslan) Вы боитесь что если вы в двух cpp-файлах будете использовать, например, std::vector то его код вставится в объектник к каждому cpp в котором он используется, а потом дубликаты не отрежутся линкёром? Да, именно этого я и боюсь:) Не бойся, не вставится. на это есть глобальная оптимизация. "Вставится" (сгенерируется) много кода, когда ты один и тот же шаблон будешь использовать для разных параметров шаблона, например, использование std::vector для char, int, std::string, float, double сгенерирует код шаблона std::vector в пяти экземплярах, но только в объёме используемых методов во всех конкретных случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 00:20 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLВолнует не скорость компиляции (с которой борятся предкомпилируемые заголовки), а разбухание кода из- за добавление ненужных объявлений во все файлы проекта. Из- за этого ощущение, что понижается надежность кода. Прибрэхиваешь ты слегка. Компилятор добавляет ссылки на символы, которые были необходимы в конкретной единице трансляции и помещает их в итоговый объектный файл, вместе со всеми инстанцированными шаблонными типами и функциями. Когда ты собираешь исполняемый файл, линковщик идёт от точки входа по всем символам транзитивно (рекурсивно), выбирая только необходимые символы, которые будут включены в итоговую сборку, то есть, игнорирует те символы, на которые не было ссылок во время рекурсивного прохода, даже если это были символы из статических библиотек (архивов объектных файлов). ЕМНИП с разделяемыми библиотеками дело обстоит иначе на разных тулчейнах. Никакого раздувания тут не случится, если ты сам не захочешь, например, включить полностью статическую библиотеку в свою сборку опцией линковщика whole archive . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 12:46 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
Аффтар, чем разводить беспокойство на пустом месте, давно бы уже включил генерацию map-файла да и посмотрел какие символы и в каком количестве в него включены. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 12:54 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, хорошо пробомбил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 13:41 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLMasterZiv, хорошо пробомбил :)Это он сгоряча лупанул, не проверив. Проблема действительно есть, на гнусе точно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2018, 23:33 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
простенькая проверка: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) Release & Debug a<>b a=b a=b a<>b a<>b 2 Microsoft Visual C++ 2015 Release a=b a=b a=b a=b a=b 2 Debug a<>b a=b a=b a<>b a<>b 2 С++ Builder 10.2 Update 1 Release & Debug a<>b a=b a=b a<>b a<>b 2 интеловского нету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 11:07 |
|
||
|
Как правильно подключить h- файлы?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, Если бы у тебя что-то включалось два раза, компилятор бы выругался, что у тебя два одинаковых определения чего-то. С другой стороны, vector (и остальные контейнеры) - это шаблон, сам по себе он кода не образует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2018, 18:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018003]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 283ms |
| total: | 461ms |

| 0 / 0 |
