Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915

Включение библиотек в main.cpp и my_func.cpp

13.03.2020, 13:32. Показов 4718. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

Подскажите пожалуйста, ни как не могу понять, вот если:

C++
1
2
3
4
5
6
7
8
9
//main.cpp
#include <iostream>
 
int main()
{
cout<<main<<endl;
 
my_func();
}
C++
1
2
3
4
5
6
7
//my_func.cpp
#include <iostream>
 
void my_func()
{
cout<<my_func<<endl;
}
То есть для того, чтобы функция my_func скомпилировалась, нужно включить в нее библиотеку isotream, и вот вопрос: в итоге в самом exe файле самой этой библиотеки isotream - будет как бы два экземпляра ? Или компилятор умный и все повторы уберет и текст библиотеки iostream - будет только один ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2020, 13:32
Ответы с готовыми решениями:

Main.cpp: In function ‘int main()’: main.cpp:10:1: error: ‘then’ was not declared in this scope
Написал программу и выдает ошибку. #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() {double a, b, x; ...

Есть три файла. файл main.cpp и Source.cpp знают только Header.h, так как он подключен. как же подключается Source.cpp
main.cpp #include &lt;iostream&gt; #include&quot;Header.h&quot; using namespace std; int main() { A ob; ob.f(); return...

Main.cpp In file included from main.cpp
//class.cpp #include &quot;class.h&quot; Ticket::Ticket() { prise = 0; marshrut = &quot;none&quot;; time = &quot;none&quot;; ...

7
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
13.03.2020, 13:43
Optimus11, начать с того, что "текста библиотеки" в exe нет никакого: ни лишнего, ни нелишнего.

Цитата Сообщение от Optimus11 Посмотреть сообщение
библиотеки isotream - будет как бы два экземпляра ?
Нет, не будет.
У вас пропущен базовый пласт знаний, из-за этого у вас такие абсурдные суждения.
Вот: https://www.youtube.com/watch?v=G_jcBrrYPAs
1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
13.03.2020, 13:43
Цитата Сообщение от Optimus11 Посмотреть сообщение
То есть для того, чтобы функция my_func скомпилировалась, нужно включить в нее библиотеку isotream, и вот вопрос: в итоге в самом exe файле самой этой библиотеки isotream - будет как бы два экземпляра ? Или компилятор умный и все повторы уберет и текст библиотеки iostream - будет только один ?
Это не библиотека, это заголовочный файл.
В любом случае, все функции, которые не-inline будут только по одному разу.
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
13.03.2020, 16:13  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Optimus11
У вас пропущен базовый пласт знаний, из-за этого у вас такие абсурдные суждения.
Вот: https://www.youtube.com/watch?v=G_jcBrrYPAs
А вообще эти знания в каких случаях применяется ? Или как часто ?
Я просто даже не могу представить в каких случаях.
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
13.03.2020, 16:16
Optimus11, всегда.

Добавлено через 35 секунд
Если вы не применяете, значит фактически пишете программу наугад.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13180 / 6816 / 1821
Регистрация: 18.10.2014
Сообщений: 17,251
13.03.2020, 17:37
Цитата Сообщение от Optimus11 Посмотреть сообщение
есть для того, чтобы функция my_func скомпилировалась, нужно включить в нее библиотеку isotream,
Не существует никакой "библиотеки isotream". <iostream> - это заголовочный файл, а не библиотека. Почему вы называете его "библиотекой"?

<iostream> - это заголовочный файл стандартной библиотеки языка С++. Стандартная библиотеки языка С++ всегда линкуется к вашей программе ("включается" в вашу программу). И линкуется один раз. Ваше #include <iostream> не имеет к этому никакого отношения.

Забудьте эту странную "пионэрскую" манеру назвать включение заголовочных файлов "включением библиотек" и подобные вопросы отпадут сами собой.
1
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
13.03.2020, 18:26  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не существует никакой "библиотеки isotream". <iostream> - это заголовочный файл, а не библиотека. Почему вы называете его "библиотекой"?
.
Под библиотекой я имел ввиду, как бы ту часть, которая как бы уже готовая есть в бинарном виде.

Позвольте я тогда по другому задам вопрос: предположим я в VS сделал две функции:

-my_func-1.h
-my_func-1.cpp

-my_func-2.h
-my_func-2.cppв

Собрал их в одну статическую библиотеку и появился один .lib файл.

В VS2017 я создаю новый проект, пишу:
C++
1
#pragma comment ("lib", путь к этому lib файлу)
То есть все что есть в этом .lib файле должно быть как бы помещено в итоговую программку нового проекта.

Если так и если содержимое всего .lib файла копируется в мой итоговый файл проекта, то зачем для использования в новом проекте функций my_func-1 и my_func-2 подключать заголовочные файлы ? Почему IDE или компилятор просто по .lib файлу не найдет соответствие вызванной функции my_func-1 и его my_func-1.h ?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13180 / 6816 / 1821
Регистрация: 18.10.2014
Сообщений: 17,251
13.03.2020, 18:43
Цитата Сообщение от Optimus11 Посмотреть сообщение
Под библиотекой я имел ввиду, как бы ту часть, которая как бы уже готовая есть в бинарном виде.
Именно подключение той части "которая как бы уже готовая есть в бинарном виде" не имеет никакого отношения к вашей директиве #include <iostream>. Делать #include <iostream> вы можете сколько угодно. Это никак не повлияет и никак не связано с подключением той части.

Цитата Сообщение от Optimus11 Посмотреть сообщение
В VS2017 я создаю новый проект, пишу:
#pragma comment ("lib", путь к этому lib файлу)
Куда именно вы это пишете???

И зачем вы это делаете? Зачем вы используете #pragma comment ("lib" вместо того, чтобы подключать библиотеки традиционным способом?

Если вам нравится идти по этому нетрадиционному пути #pragma comment ("lib", то все равно множественного подключения библиотеки происходить не должно, даже если вы поместите ваш #pragma comment ("lib" в заголовочный файл. (Однако, возможно, путем манипуляций с путями можно обмануть компилятор и добиться множественного включения).

Цитата Сообщение от Optimus11 Посмотреть сообщение
зачем для использования в новом проекте функций my_func-1 и my_func-2 подключать заголовочные файлы ?
Как это "зачем"? В заголовочных файла содержатся объявления библиотечных функций, объявления сопутствующих типов и т.д. и т.п. Без этих объявлений вы не сможете вызывать функции библиотеки, т.е. не сможете пользоваться библиотекой.

Теоретически, чтобы сделать эти объявления, подключать заголовочные файлы не обязательно: вы можете сами руками написать эти объявления с нуля. Но зачем, если можно просто подключить готовый заголовочный файл?

Цитата Сообщение от Optimus11 Посмотреть сообщение
Почему IDE или компилятор просто по .lib файлу не найдет соответствие вызванной функции my_func-1 и его my_func-1.h ?
Не понимаю, о каком "соответствии" вы ведете речь. На основе чего формируется это соответствие? Откуда компилятору знать, какой .h файл какой библиотеке (или функции) соответствует?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2020, 18:43
Помогаю со студенческими работами здесь

Подключение файлов main.cpp some.cpp some.h
Всем привет, программа разделенна на три файла poly.cpp main.cpp poly.h Кто мог бы объяснить как происходит подключение этих файлов, и как...

Вот: source_file.cpp: In function 'int main()': source_file.cpp:10:12: error: 'strlen' was not declared in this scope
#include&lt;iostream&gt; using namespace std; int main() { char a,b; int i,j; cout&lt;&lt;&quot;Напишите слово:&quot;; cin&gt;&gt;a; i=0; ...

С помощью командной строки >namberstr f1.cpp Определить число строк в файле с именем f1.cpp
С помощью командной строки &gt;namberstr f1.cpp Определить число строк в файле с именем f1.cpp

Main.cpp vs MainWindow
С недавних пор пробую свои силы на C++ в Qt. Создание и инициализацию объектов, используемых в оконных проектах, выполнял в конструкторе...

Разбить main.cpp на файлы
Есть вот такой main.cpp: #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; //#include &lt;stdint.h&gt; //#include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru