Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как правильно подключить h- файлы? / 25 сообщений из 37, страница 1 из 2
05.01.2018, 10:49
    #39579570
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
Есть желание сократить код, введя сокращенные названия типов. Поэтому создан нижеприведенный файл, который потом "заинклюден" ко ВСЕМ остальным файлам проекта:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include <QString>
#include <string>
#include <vector>
#include <regex>

typedef const QString cQString;
typedef const std::string cstring;
typedef const std::vector cvector;
typedef const std::regex cregex;
typedef const std::string::size_type csize_type;



Я правильно понимаю, что тем самым у меня сильно разбухает код, ведь директива "#include" рекурсивно вставляет исходных код string, vector и regex во все файлы моего проекта?

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

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



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

компилятор/линкер дублирование уберут
...
Рейтинг: 0 / 0
05.01.2018, 11:13
    #39579579
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
SiemarglAlekseySQL,

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



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

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

Дублирование то уберут, но мне не в каждом файле даже один раз нужны эти типы данных. Если развивать мой подход, то к каждому файлу по мере роста проекта будет подключена половина стандартной библиотеки + половина библиотеки Qt ...
...
Рейтинг: 0 / 0
05.01.2018, 11:42
    #39579588
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
"подключено" - нет такого термина. говори корректно, иначе непонятно
...
Рейтинг: 0 / 0
05.01.2018, 12:32
    #39579616
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
AlekseySQLсоздан нижеприведенный файл, который потом "заинклюден" ко ВСЕМ остальным файлам проекта:
Код: plaintext
1.
2.
3.
4.
#include <QString>
#include <string>
#include <vector>
#include <regex>

Я правильно понимаю, что тем самым у меня сильно разбухает код, ведь директива "#include" рекурсивно вставляет исходных код string, vector и regex во все файлы моего проекта?Странные пошли люди ...
Ведь достаточно открыть один-два нормальных заголовка и увидеть что-то вроде:
Код: plaintext
1.
2.
3.
4.
#ifndef _НЕЧТО_
#define _НЕЧТО_
...
#endif

Но, конечно, потратить часок на форуме гораздо проще, чем самому разбораться за пять минут.

P.S. Время компиляции - да, просядет.
Поэтому, лень должна быть обоснована, а не просто лень.
...
Рейтинг: 0 / 0
05.01.2018, 12:32
    #39579617
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
Siemargl"подключено" - нет такого термина. говори корректно, иначе непонятно

Директива "include" добавляет ("подключает") в исходный текст код, который расположен в указанном файле. Другими словами, итоговый код состоит из двух кусков программы: "подключенного" библиотечного и исходного. Если в исходные тексты программ с помощью include прописать все возможные библиотечные файлы, то исходные тексты по логике должны сильно распухнуть.

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

больше время компиляции, ну и все
...
Рейтинг: 0 / 0
05.01.2018, 12:54
    #39579631
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
Basil A. SidorovВедь достаточно открыть один-два нормальных заголовка и увидеть что-то вроде:
Код: plaintext
1.
2.
3.
4.
#ifndef _НЕЧТО_
#define _НЕЧТО_
...
#endif


Можно короче
Код: plaintext
1.
#pragma once
...
Рейтинг: 0 / 0
05.01.2018, 13:48
    #39579671
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
Dima TBasil A. SidorovВедь достаточно открыть один-два нормальных заголовка и увидеть что-то вроде:
Код: plaintext
1.
2.
3.
4.
#ifndef _НЕЧТО_
#define _НЕЧТО_
...
#endif


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



При подобных директивах препроцессор в КАЖДУЮ единицу компиляции включит файлы библиотек только по одному разу. Единицей компиляции в С++ является файл. Другими словами, как я и написал в каждый файл проекта по разу будет подключено куча библиотечных файлов.
...
Рейтинг: 0 / 0
05.01.2018, 18:02
    #39579827
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
AlekseySQLЕсть желание сократить код, введя сокращенные названия типов.
Маленький SSD?
...
Рейтинг: 0 / 0
05.01.2018, 18:40
    #39579843
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
alex_kМаленький SSD?

Спасибо, поржал:)
...
Рейтинг: 0 / 0
05.01.2018, 19:02
    #39579848
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
Dima TBasil A. SidorovВедь достаточно открыть один-два нормальных заголовка и увидеть что-то вроде:
Код: plaintext
1.
2.
3.
4.
#ifndef _НЕЧТО_
#define _НЕЧТО_
...
#endif


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

Можно, но не стоит. Эта прагма не является универсальной для всех компиляторов.
...
Рейтинг: 0 / 0
05.01.2018, 19:04
    #39579849
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
AlekseySQLDima Tпропущено...

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



При подобных директивах препроцессор в КАЖДУЮ единицу компиляции включит файлы библиотек только по одному разу. Единицей компиляции в С++ является файл. Другими словами, как я и написал в каждый файл проекта по разу будет подключено куча библиотечных файлов.И это проблема? Тогда тебе стоит почитать про пре-компиляцию заголовков.
...
Рейтинг: 0 / 0
05.01.2018, 19:12
    #39579851
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
White OwlЭта прагма не является универсальной для всех компиляторов.

Назови два, которые её не поддерживают. Древние версии - не в счёт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.01.2018, 19:25
    #39579858
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
Dimitry SibiryakovWhite OwlЭта прагма не является универсальной для всех компиляторов.

Назови два, которые её не поддерживают. Древние версии - не в счёт.
Древние версии как раз "в счет". В больших конторах намного труднее идти в ногу с прогрессом и обновлять не то что компиляторы, но и ОС.
...
Рейтинг: 0 / 0
05.01.2018, 19:27
    #39579861
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
White OwlДревние версии как раз "в счет". В больших конторах намного труднее идти в ногу с
прогрессом и обновлять не то что компиляторы, но и ОС.

ЕМНИП, MS VC стал поддерживать эту прагму в версии 2013, то есть пять лет назад. GCC - ещё
раньше. Тормозила только SUN Studio и BCC до перехода на clang.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.01.2018, 19:53
    #39579875
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
Dimitry SibiryakovЕМНИП, MS VC стал поддерживать эту прагму в версии 2013Согласно вики - с VS2003.
...
Рейтинг: 0 / 0
05.01.2018, 20:59
    #39579900
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
AlekseySQL,

да нормально, прекомпилируемые заголовки как раз для лечения того что вы боитесь

хорошая статейка
...
Рейтинг: 0 / 0
05.01.2018, 21:36
    #39579906
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
Dimitry SibiryakovWhite OwlДревние версии как раз "в счет". В больших конторах намного труднее идти в ногу с
прогрессом и обновлять не то что компиляторы, но и ОС.

ЕМНИП, MS VC стал поддерживать эту прагму в версии 2013, то есть пять лет назад. GCC - ещё
раньше. Тормозила только SUN Studio и BCC до перехода на clang.
А я вот до сих пор пишу для компилятора:
Код: plaintext
1.
$ /usr/vac/bin/xlc -qversion
C for AIX version 6.0.0.0$
И да, обновляться в планах есть... Вот уже вроде даже как решились... вроде бы... кажется...
...
Рейтинг: 0 / 0
06.01.2018, 10:09
    #39579991
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
kealon(Ruslan)AlekseySQL,

да нормально, прекомпилируемые заголовки как раз для лечения того что вы боитесь

хорошая статейка

Честно говоря, статейка не по теме :)

Волнует не скорость компиляции (с которой борятся предкомпилируемые заголовки), а разбухание кода из- за добавление ненужных объявлений во все файлы проекта. Из- за этого ощущение, что понижается надежность кода.
...
Рейтинг: 0 / 0
06.01.2018, 10:44
    #39580000
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
AlekseySQL,

такс, пойдём от определений
что вы называете размером кода? вывод после препроцессора? ну так это бред

автор#include" рекурсивно вставляет исходных код string, vector и regex во все файлы моего проекта? макросы если не используются то не вставляются. Вы боитесь что если вы в двух cpp-файлах будете использовать, например, std::vector то его код вставится в объектник к каждому cpp в котором он используется, а потом дубликаты не отрежутся линкёром?

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


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

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


Да, именно этого я и боюсь:)
Это совсем копейки. На это следует обращать внимание только если программируешь под что-то намного меньше, чем дешевый смартфон.
И если вы просто накидали кучу include<> и не использовали (не инстанцировали) их классы и функции, то их код никуда не вставится и вообще не создастся.
...
Рейтинг: 0 / 0
07.01.2018, 00:03
    #39580202
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно подключить h- файлы?
AlekseySQL
Я правильно понимаю, что тем самым у меня сильно разбухает код, ведь директива "#include" рекурсивно вставляет исходных код string, vector и regex во все файлы моего проекта?


Нет, неправильно.

AlekseySQLКакие последствия у такого подхода?

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


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