Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 29.07.2017
Сообщений: 4

Подключение заголовочного файла к нескольким CPP

07.11.2017, 22:25. Показов 5001. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! У меня проблема такого рода: есть base.h в котором имеется набор функций и есть 2 .cpp документа, которые используют его функции. При определении хедера возникает ошибка, что функции определени дважди. Вопрос таков: как дать доступ code1.cpp и code2.cpp к функциям хереда при том, что они НЕ ДОЛЖНИ наследовать друг друга?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2017, 22:25
Ответы с готовыми решениями:

Для интерфейса достаточно только заголовочного файла или нужен еще файл .cpp
Собственно вопрос в теме. Например, я хочу создать интерфейс который будут другие классы реализовывать.

Подключение заголовочного файла
Как подключить правильно заголовочный файл и какие библиотеки подключать в заголовочном файле?

Подключение заголовочного файла
При подключении заголовочного файла вылазит ошибка: Код: #include "stdafx.h" #include <iostream> #include...

34
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
09.11.2017, 00:06
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от animefan Посмотреть сообщение
Программа должна быстро работать.
Пользователям плевать, сколько она собирается.
Если смотреть на процесс создания ПО шире, то экономически выгоднее сделать что-либо быстрее и выйти на рынок. Если компиляция будет длиться час и более, то процесс разработки будет тормозить на ровном месте.

В каких местах скорость в обычных приложениях критична? Если нет возможности быстро получить результат и обратную связь, то количество говнокода ошибок растёт.

Тут, конечно, можно спорить сколько угодно не имея конкретных данных о разрабатываемой системе, но я бы в общем случае не стал везде лепить inline, тем более, что компиляторы сейчас достаточно умные и сами разбираются что встроить, а что нет.

И напоследок - pImpl не от хорошей жизни придумали.
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
09.11.2017, 00:57
Цитата Сообщение от animefan Посмотреть сообщение
Инлайнинг творит чудеса с производительностью.
Вдруг компилятор такую функцию сделает встроенной:
Code
1
2
3
4
int foo()
{
  /* 200 lines */
}
, и потом вдруг исполняемый файл терабайт весит(

Но это, конечно, гипербола своего рода, компилятор — не программист, вряд ли сделает подобное, но все может быть...
Стоит использовать все по назначению.
0
 Аватар для animefan
119 / 9 / 2
Регистрация: 06.09.2017
Сообщений: 82
09.11.2017, 15:04
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Когда в камень не влезает более 512 ассемблерных команд и 128 байт данных, а скорость всего десяток миллионов операций в секунду, приходится куда тщательнее следить за размером и скоростью.
Мало пафоса. Для полного эффекта ты должен был кинуть ссылку на душещипательный рассказ «Истоpия одного байта».

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Похоже, вы не работали с системами с ограниченной производительностью - старыми ЭВМ или контроллерами.
Осталось понять, при чём тут это, когда разговор о C++. Или ты на нём под такие ЭВМ и камни пишешь?

Цитата Сообщение от MrGluck Посмотреть сообщение
Если смотреть на процесс создания ПО шире, то экономически выгоднее сделать что-либо быстрее и выйти на рынок.
Ты наверное думаешь, что выйти на рынок можно только в определённый день в определённый час и в определённую минуту. И если софт компилировался на 20 минут дольше, то он пропускает эту минуту и никогда больше не может выйти на рынок

Цитата Сообщение от MrGluck Посмотреть сообщение
В каких местах скорость в обычных приложениях критична?
Во всех.

Цитата Сообщение от Captain Maxee Посмотреть сообщение
Стоит использовать все по назначению.
Да. Например, оставить оптимизатору его работу. Пусть он решает, что встроить, а что нет. А не я.
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
09.11.2017, 15:48
Цитата Сообщение от animefan Посмотреть сообщение
Мало пафоса. Для полного эффекта ты должен был кинуть ссылку на душещипательный рассказ «Истоpия одного байта».
Оставлю эту честь вам.
Цитата Сообщение от animefan Посмотреть сообщение
Осталось понять, при чём тут это, когда разговор о C++. Или ты на нём под такие ЭВМ и камни пишешь?
Я нет, только на Си, в основном под камни постарше, с 8К флеша и 512 ОЗУ, но и с ATtiny13 дело имел. На С++ пишут ардуинщики. Но в целом это просто к слову пришлось.
Цитата Сообщение от animefan Посмотреть сообщение
Да. Например, оставить оптимизатору его работу. Пусть он решает, что встроить, а что нет. А не я.
Именно! А не заставлять инлайнить все и вся.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
09.11.2017, 15:52
Цитата Сообщение от animefan Посмотреть сообщение
Осталось понять, при чём тут это, когда разговор о C++. Или ты на нём под такие ЭВМ и камни пишешь?
А на каком языке, по-твоему, микроконтроллеры программируют? Зачем вообще до сих пор программируют на С++, если есть языки типа Python? Вы вообще знакомы с темой встроенных систем, микроконтроллеров, Embedded... называйте как хотите!? Вообще, ты меня даже заинтриговал, признаюсь! Я не успокоюсь пока не ответишь на вопрос: И на каком же языке, если не на плюсах "под такие камни пишут"?

Добавлено через 3 минуты
Цитата Сообщение от animefan Посмотреть сообщение
Ты наверное думаешь, что выйти на рынок можно только в определённый день в определённый час и в определённую минуту. И если софт компилировался на 20 минут дольше, то он пропускает эту минуту и никогда больше не может выйти на рынок
вы никогда не работали с проектами, которые по полчаса/по часу билдятся?
0
 Аватар для animefan
119 / 9 / 2
Регистрация: 06.09.2017
Сообщений: 82
09.11.2017, 16:44
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
это просто к слову пришлось.
В следующий раз, когда будешь влезать в спор, потрудись сразу сообщить, что ты приводишь не аргументы, а "просто к слову" вставляешь рандом.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А не заставлять инлайнить все и вся.
inline не заставляет инлайнить всё и вся. Заставляет __attribute__((always_inline)) или иной компиляторо-специфичный аналог.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А на каком языке, по-твоему, микроконтроллеры программируют?
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
только на Си
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
вы никогда не работали с проектами, которые по полчаса/по часу билдятся?
Работали, а что?
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
09.11.2017, 17:01
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
И на каком же языке, если не на плюсах "под такие камни пишут"?
Как раз на плюсах под контроллеры пишут редко. Все-таки этот язык здорово заточен на динамическое выделение памяти. Разве что сознательно ограничиваться классами без наследования да шаблонами.
Чаще всего пишут на Си и Ассемблере.
Цитата Сообщение от animefan Посмотреть сообщение
В следующий раз, когда будешь влезать в спор, потрудись сразу сообщить, что ты приводишь не аргументы, а "просто к слову" вставляешь рандом.
В следующий раз постарайся сначала вникнуть в суть аргументов. Хоть они и "к слову", но тоже не бессмысленны.
Цитата Сообщение от animefan Посмотреть сообщение
inline не заставляет инлайнить всё и вся. Заставляет __attribute__((always_inline)) или иной компиляторо-специфичный аналог.
Ну давай теперь цепляться к словам.
0
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
09.11.2017, 17:02
Цитата Сообщение от animefan Посмотреть сообщение
Пользователям плевать, сколько она собирается.
Хах! Удачи при создании скада-системы для какого нибудь комплекса)))
0
 Аватар для animefan
119 / 9 / 2
Регистрация: 06.09.2017
Сообщений: 82
09.11.2017, 20:41
Цитата Сообщение от Valeryn Посмотреть сообщение
скада-системы для какого нибудь комплекса
Всё, что я нашёл по ключевым словам "scud complex", это https://en.wikipedia.org/wiki/Scud
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,888
09.11.2017, 20:48
Вероятно, имеется в виду это: https://ru.wikipedia.org/wiki/SCADA
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
09.11.2017, 20:48
animefan, SCADA, а не эльбрус
0
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
10.11.2017, 11:43
Цитата Сообщение от animefan Посмотреть сообщение
Всё, что я нашёл по ключевым словам "scud complex", это https://en.wikipedia.org/wiki/Scud
как выше ответили "SCADA".
0
Эксперт .NET
 Аватар для Usaga
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
10.11.2017, 12:32
Цитата Сообщение от animefan Посмотреть сообщение
И если софт компилировался на 20 минут дольше, то он пропускает эту минуту и никогда больше не может выйти на рынок
Пока идёт компиляция - программист простаивает, пока программист простаивает - работа не делается, пока работа не делается - софт к завершению не движется. А время идёт.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
10.11.2017, 12:42
К слову сказать инлайнинг не всегда улучшает производительность, в отдельных случаях он может ее замедлить. Поэтому ключевое слово inline ничего не гарантирует, компилятор сам решает что лучше.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
вы никогда не работали с проектами, которые по полчаса/по часу билдятся?
Это еще не сильно больно, полная пересборка редко же делается. У меня рабочий проект 4-5 часов собирается, вот тут полная пересборка могла бы приравниваться к выходному дню Но мы конечно же распределенно это делаем, за час-полтора собирается.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
10.11.2017, 18:22
Цитата Сообщение от MrGluck Посмотреть сообщение
И с пересборкой всего проекта по каждому чиху.
так или иначе, но в мире с++ есть полным полно ситуаций,
когда не получится дербанить код на хедер/спп.
шаблоны, например.
и тем не менее, как то же люди живут.

-------------------------------------------------------------------
для маленьких проектов время компиляции не критично.

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

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

резюмируя:
если у вас есть проблема с временем компиляции,
значит вы что-то делаете не так.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2017, 18:22
Помогаю со студенческими работами здесь

Подключение заголовочного файла record.h
Есть программа, только она не запускается на моём компе (долго рассказывать почему). Если можете, запустите её у себя и скиньте результат...

Подключение заголовочного файла std_lib_facilities.h
Здравствуйте. Учу C++ по книге Stroustrup'а. Автор настоятельно просит использовать библиотеку std_lib_facilities.h Создал...

Подключение собственного заголовочного файла
В общем есть файл с исходный кодом, который содержит main(). Здесь же подключаю свой заголовочный файл, который тянет за собой другой файл...

Создание и подключение заголовочного файла
Всем привет! Столкнулся с простой но очень интересной проблемой... Создаю новый проект в MVS2012 (пустой), создаю в нем файл исходного...

Подключение заголовочного файла QList
Что-то затупил по структуре проекта. есть header.h: #include <QList> ...//код Подключаем в .cpp


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
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