powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно подключить h- файлы?
12 сообщений из 37, страница 2 из 2
Как правильно подключить h- файлы?
    #39580204
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLSiemarglAlekseySQL,

открой для себя
Код: plaintext
1.
using namespace std



include - текстовая вставка

компилятор/линкер дублирование уберут

Дублирование то уберут, но мне не в каждом файле даже один раз нужны эти типы данных. Если развивать мой подход, то к каждому файлу по мере роста проекта будет подключена половина стандартной библиотеки + половина библиотеки Qt ...

Тебе надо уяснить разницу между объявлением и определением. Также между определением шаблона и его инстанциацией.
Также о том, как работает редактор связей (линкер).

В общем, все твои страхи -- это просто паранойя невежды.
Учи язык.
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580205
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLDima Tпропущено...

Можно короче
Код: plaintext
1.
#pragma once



При подобных директивах препроцессор в КАЖДУЮ единицу компиляции включит файлы библиотек только по одному разу. Единицей компиляции в С++ является файл. Другими словами, как я и написал в каждый файл проекта по разу будет подключено куча библиотечных файлов.

Ну и что? Шаблонный код например ДАЖЕ КОМПИЛИРОВАТЬСЯ НЕ БУДЕТ, если он не используется реально.
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580206
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovWhite OwlЭта прагма не является универсальной для всех компиляторов.

Назови два, которые её не поддерживают. Древние версии - не в счёт.


Да её уже все поддерживают, но тем не менее в стандарте её нет....
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580208
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL...
Волнует ... разбухание кода из- за добавление ненужных объявлений во все файлы проекта.


Расскажи, что ты подразумеваешь под " разбуханием кода ", дай полное развёрнутое определение.

AlekseySQL Из- за этого ощущение, что понижается надежность кода.

Вообще полный бред...
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580209
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)AlekseySQL,

гугли extern template

да его не поддерживает никто уже...
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580210
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLkealon(Ruslan) Вы боитесь что если вы в двух cpp-файлах будете использовать, например, std::vector то его код вставится в объектник к каждому cpp в котором он используется, а потом дубликаты не отрежутся линкёром?


Да, именно этого я и боюсь:)

Не бойся, не вставится.
на это есть глобальная оптимизация.
"Вставится" (сгенерируется) много кода, когда ты один и тот же шаблон будешь использовать для разных параметров шаблона, например, использование std::vector для char, int, std::string, float, double сгенерирует код шаблона std::vector в пяти экземплярах, но только в объёме используемых методов во всех конкретных случаях.
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580275
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLВолнует не скорость компиляции (с которой борятся предкомпилируемые заголовки), а разбухание кода из- за добавление ненужных объявлений во все файлы проекта. Из- за этого ощущение, что понижается надежность кода.
Прибрэхиваешь ты слегка.
Компилятор добавляет ссылки на символы, которые были необходимы в конкретной единице трансляции и помещает их в итоговый объектный файл, вместе со всеми инстанцированными шаблонными типами и функциями.
Когда ты собираешь исполняемый файл, линковщик идёт от точки входа по всем символам транзитивно (рекурсивно), выбирая только необходимые символы, которые будут включены в итоговую сборку, то есть, игнорирует те символы, на которые не было ссылок во время рекурсивного прохода, даже если это были символы из статических библиотек (архивов объектных файлов).
ЕМНИП с разделяемыми библиотеками дело обстоит иначе на разных тулчейнах.

Никакого раздувания тут не случится, если ты сам не захочешь, например, включить полностью статическую библиотеку в свою сборку опцией линковщика whole archive .
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580276
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аффтар, чем разводить беспокойство на пустом месте, давно бы уже включил генерацию
map-файла да и посмотрел какие символы и в каком количестве в него включены.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580286
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, хорошо пробомбил :)
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580427
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLMasterZiv, хорошо пробомбил :)Это он сгоряча лупанул, не проверив. Проблема действительно есть, на гнусе точно
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580491
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простенькая проверка:

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


интеловского нету
...
Рейтинг: 0 / 0
Как правильно подключить h- файлы?
    #39580619
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

Если бы у тебя что-то включалось два раза, компилятор бы выругался, что у тебя два одинаковых определения чего-то.
С другой стороны, vector (и остальные контейнеры) - это шаблон, сам по себе он кода не образует.
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно подключить h- файлы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]