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

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

13.03.2020, 13:32. Показов 4656. Ответов 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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
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
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
13.03.2020, 16:16
Optimus11, всегда.

Добавлено через 35 секунд
Если вы не применяете, значит фактически пишете программу наугад.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12923 / 6792 / 1818
Регистрация: 18.10.2014
Сообщений: 17,187
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
12923 / 6792 / 1818
Регистрация: 18.10.2014
Сообщений: 17,187
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru