Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337

Вставка кода внутри программы

04.01.2018, 17:08. Показов 4757. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня следующий вопрос: можно ли внутри кода программы в любом ее месте вызвать функцию, которая бы вставляла код cpp из другого файла. Дело в том, что у меня много кода и не хочется каждый раз прокручивать то, что не нужно, а просто вставить из другого файла. Никогда этого не делал в C++. Помогите, пожалуйста (с небольшим примером кода, как это делается, если это возможно). Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.01.2018, 17:08
Ответы с готовыми решениями:

Вставка символов внутри слова
Нужно вставить "ма" или любые несколько символов после каждой гласной буквы слова. Нужно сделать универсальную программу, используя strchr...

Использование C++ кода внутри программы на C: какие есть варианты?
Есть программа на C++, и в ней кое-какие нужные функции, которые хотелось бы использовать в программе на C. Переписывать заново функции с...

БД и Delphi. Запрос внутри кода программы.
Здравствуйте. Пишу программу тестирования. Возникла проблема. Состоит она вот в чем. Есть две формы, форма входа и основная форма. На...

19
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
04.01.2018, 18:30
Можно пример, как это должно выглядеть в вашем представлении (вход - выход)?
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
04.01.2018, 18:31
#include "Путь_до_любого_файла_содержимое_которог о_необходимо_в_это_место_вставить"
Но это такой жуткий костыль...
Лучше научитесь пользоваться классами.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.01.2018, 18:36
jahdjkhasjdhjah, бред сивой кобылы
Инклудят .h Файлы
Классы вообще к этой теме как тёплое к мягкому

Добавлено через 52 секунды
Fixer_84, google раздельная компиляция C++
1
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
04.01.2018, 18:41
приинклудить можно абсолютно любой текстовый файл
Классы - как раз, самое прямое отношение. Оформляете код в класс в отдельном файле и в основном коде юзаете только его интерфейс, раз у ж мы о плюсах говорим.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
04.01.2018, 18:48  [ТС]
Здравствуйте! Спасибо, что уделили внимание. Например, в PHP это можно сделать с помощью функции include() или include_once(). Просто хотел узнать, можно ли то же самое сделать в С++.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.01.2018, 18:48
Препроцессор то приинклудит но как это убожество потом линкер съест? Понятие линковки вам знакомо?
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
04.01.2018, 18:49
Не хуже съест, чем кучу раздельных файлов.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.01.2018, 18:50
Fixer_84, просто google раздельная компиляция!!! есть статьи, которые пишут люди пограмотнее форумчан!
1
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
04.01.2018, 18:52
Kuzia domovenok, пограмотнее НЕКОТОРЫХ форумчан. )))
Kuzia domovenok, прошу обратить внимание, что мой вариант с классами никак не противоречит вашему варианту. )
Просто это более правильный вариант, раз уж мы пишем на высокоуровневом языке, ведь речь именно о плюсах, не правда ли?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.01.2018, 18:56
jahdjkhasjdhjah, если все Файлы созданы в ide в одном проекте, они уже включены в компиляцию в итоге имеем чехарду, когда компилируемых файл А и затем снова он же компилируется в состоянии приинклуженности к файлу Б

Добавлено через 1 минуту
jahdjkhasjdhjah, пограмотнее всех и меня и тебя и тысяч пользователей форума. Не надо считать себя умнее всех. Общество априори умнее любого индивидуала.
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
04.01.2018, 19:07
Kuzia domovenok, не придумывайте ситуаций, которых нет. Если бы было так, как вы говорите, инклудить что-то в куда-то не было бы необходимости. И я сразу пояснил, что это жуткий костыль.
Но я однажды его использовал, когда для ардуины мне нужно было загнать большой массив данных в Progmem, сгенеренных в отдельном файле отдельной утилитой.

Я тогда оформил это примерно так:
C++
1
2
3
const char PROGMEM myarray[] = {
   #include "текстовый файл с несколькими килобайтами данных через запятую"
};
Можно было бы и скопипастить, но как читать такой код? + если файл пришлось бы перегенерить, то пришлось бы делать новую копипасту. А так - в коде ничего не меняется.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Общество априори умнее любого индивидуала.
Ага. ) Только почему-то статьи пишет не общество, а индивидуалы. )
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.01.2018, 19:10
В том-то и дело, что текстовый файл, а не cpp! Я предлагаю тебе открыть IDE и создать там проект из нескольких cpp файлов и с ними поэкспериментировать. Написать программу в раздельных файлах, но без единого инклуда имён этих файлов.
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
04.01.2018, 19:14
*.cpp - не текстовый, не? И че ты привязался со своей ide? Если бы речь шла об ide - таких вопросов не возникало бы. Закрыли тему.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.01.2018, 19:20
jahdjkhasjdhjah, ты предпочитаешь в командной строке билдить проекты, без IDE? Твои вкусы специфичны, но и в этом случае я предлагаю тебе собрать программу из нескольких исходников без использования #include. Просто чтоб ты прочувствовал что такое раздельные файлы.
0
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
04.01.2018, 19:21
Kuzia domovenok, люди для этого давно придумали make-файлы. И открою тебе великую тайну - большинство IDE активно их используют.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
04.01.2018, 19:29
Лучший ответ Сообщение было отмечено Fixer_84 как решение

Решение

jahdjkhasjdhjah, вы с темы то не съезжайте!
Я говорил что в программе можно не писать при желании вообще ни одного инклуда. Впрочем обычно инклудят hФайлы в которые выносят декларейшны, но вот выносить в hФайлы неинлайнящийся исполняемый код - Такое я бредом называю.
1
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
04.01.2018, 19:33
Кто-то и goto бредом называет, а вон в ядре линукса такового добра навалом.
И с чего вы взяли, что я должен строго следовать навязываемой вами теме?
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
не писать при желании вообще ни одного инклуда.
При большом желании (или при большом нежелании) можно вообще ничего не писать.

Я считаю, что необходимо знать все возможности того инструмента, с которым работаешь. А уж использовать их или нет - тут уж дело каждого. И навязывать кому-то свое мнение не стоит.
0
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
04.01.2018, 19:36
Fixer_84, PHP как интерпретируемый язык, позволяет вставку кода в рантайме. C++, в свою очередь, один из наименее динамических распространённых языков, и касательно вставки кода - такие решения принимаются на этапе компиляции, если более строго - даже до этого этапа, при препроцессинге кода. У препроцессора есть директивы #include и #define, первая замещает строку с её использованием на содержимое указанного файла, вторая позволяет определять именованные макросы, и в дальнейшем, препроцессор, встретив имя макроса, подставит на его место его определение.
Но вообще, как здесь правильно отметили - проблема вставки кода возникает не просто так, это проблема его организации, декомпозиции и возможностей повторного использования. Раздельная компиляция, декомпозиция на функции и классы, - это база, которой желательно обладать перед тем как принимать такие решения.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
04.01.2018, 23:09  [ТС]
Kuzia domovenok, спасибо. Буду читать.

Добавлено через 2 часа 42 минуты
Kuzia domovenok,
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Препроцессор то приинклудит но как это убожество потом линкер съест? Понятие линковки вам знакомо?
Слышал о таком, но саму структуру знаю плохо, хоть и увлекаюсь программированием. Буду читать про раздельную компиляцию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2018, 23:09
Помогаю со студенческими работами здесь

Компиляция кода внутри программы. как реализовать и что изучать?
Допустим, у меня есть программа с некоторым алгоритмом, однако есть одна функция, реализацию которой я хочу отдать пользователю. Я себе это...

Запуск неуправляемого кода внутри кода c#
часто требуется при выполнении программы запускать исполняемые файлы (exe) с ключами. Для этого использую пространство имен using...

Вставка кода
Можно ли на страницу вставить php код с формой для заполнения данных?

Вставка кода С
Мне нужно в питончик вставить код написанный на СИ, подсказали библиотеку ctypes, кто - нибудь может подсказать как это делается на...

Вставка кода
У меня есть код для тестов. Первый код их открытия: procedure TForm1.N5Click(Sender: TObject); //открытие тестов begin ...


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

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