Как выполнить код на этапе компиляции?07.09.2020, 20:24. Показов 8265. Ответов 56
Метки нет (Все метки)
Предположим есть функция(может быть какая угодно часть кода).
0
|
||||||
| 07.09.2020, 20:24 | |
|
Ответы с готовыми решениями:
56
Как добавить анонимный тип в объект не на этапе компиляции, а на этапе выполнения программы? Надо для routes.MapRoute Возможно ли изменить байт-код класса потомка на этапе компиляции? Как на этапе компиляции определить принадлежность к классу? |
|
76 / 68 / 10
Регистрация: 11.07.2016
Сообщений: 320
|
|
| 08.09.2020, 20:02 | |
|
hoggy, да, забыл вызвать (студия на одном пк работает, пишу с другого). С остальным согласен, ошибался.
Avazart, DRY? Я уж было испугался, пару минут гуглил даже, что это за принцип DRI такой, который я умудрился нарушить) В общем, да, ничего вменяемого кроме всевозможных проверок, видимо, не сделать. На гитхабе такое встречается.
0
|
|
|
|
||||||
| 08.09.2020, 21:14 | ||||||
|
Да опечатка. Почему сразу не создать массив масcивов, который объявить глобально, а не возвращая из ф-ции ?
Добавлено через 16 минут
0
|
||||||
| 09.09.2020, 20:38 [ТС] | ||
string (или напечатать в файл) сохранить код программы как текст и на этапе компиляции хочу чтобы были найдены нужные элементы, которые в дальнейшем будут использоваться для расчётов а данный текст будет автоматически уничтожен. Получается что я знаю всё заранее и могу вычислить такую процедуру на этапе компиляции. Ту функцию я взял как пример я думал есть обобщённая специфика управления этой процедурой но видимо тут всё тяжко. Другими словами сделать эффект интерпретатора на стадии компиляции ну а дальше использовать простые расчёты.
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 09.09.2020, 20:44 | ||
|
void там делать бессмысленно, ничего внутри такой функции ты не сделаешь, кроме static_assert.
0
|
||
| 09.09.2020, 21:32 [ТС] | |||||||
Pomidor если оно есть то е=1; Ну а дальше работать с е понятное дело что вы не понимаете зачем это нужно ведь это можно выполнить и так но я же не могу вам писать здесь длинные фразы что они будут делать. Просто у меня есть идея как это использовать и объяснять всю идею будет долго.
0
|
|||||||
|
Комп_Оратор)
|
||||||
| 09.09.2020, 21:46 | ||||||
0
|
||||||
|
|
|
| 09.09.2020, 21:46 | |
|
Допустим у Вас есть файл А.cpp в проекте где это определена строка k
Вы пишите консольную утилиту которая будет парсить A.cpp искать cтроку k и генерировать на её основе файл B.сpp в который будет записывать bool e с соответствующим значением. Остается только настроить IDE/компилятор что бы перед компиляций запускалась Ваша утилита для кодогенерации а затем уже шла сама компиляция/сборка. Для того что утилите было проще искать можно искомые места обозначать пустыми(или не пустыми) макросами.
0
|
|
| 09.09.2020, 23:07 [ТС] | |||
typeid он же умеет просматривать собственный код?
char можно просмотреть его и сравнить все символы если совпадут изменить значение е на истину, разве это нельзя сделать на этапе компиляции.
0
|
|||
|
Комп_Оратор)
|
||
| 09.09.2020, 23:13 | ||
#ifndef------#endif. Не обращайте внимания. Это я вангую. Нервишки дают фальстарт. Пока не скажете, что хотите сделать (не раскрывая глубинной сути, конечно) не смогу сказать, что-то не смешное.
0
|
||
|
|
||||||||
| 09.09.2020, 23:23 | ||||||||
|
Добавлено через 3 минуты Для таких целей обычно используют enum class Добавлено через 3 минуты
0
|
||||||||
| 09.09.2020, 23:49 [ТС] | |||
typeid нихрена он не находит он видит только первый уровень а мне нужно глубже, получается что мне нужно составить текст программы, сравнить, а потом действовать, я думал можно выполнить эти расчёты на стадии компиляции т.к. текст программы известен.А какими способами можно прочитать ещё собственную инструкцию, насколько я это всё понял конечная инструкция будет храниться на ассемблере и её расшифровывать будет сложно но тем не менее всё равно инструкция куда-то пишется и мне конечно лучше её читать текстом?
0
|
|||
|
Комп_Оратор)
|
||
| 10.09.2020, 00:02 | ||
|
Nexi99, тяжело ванговать всё время. Когда напишете что-то определяющее задачу, может попробую сказать что-то. Да тут и без меня найдется кому подсказать. Я пока - пас.
0
|
||
|
Комп_Оратор)
|
|||||||
| 10.09.2020, 00:54 | |||||||
![]() Добавлено через 9 минут В конце, для улыбнуть:
0
|
|||||||
|
Комп_Оратор)
|
||
| 10.09.2020, 10:24 | ||
|
Возможная реализация: 1. Завариваете кофе. 2. Cтавите на столик чашку и турочку. 3. Рядом кладёте фал со свежей газетой. 4. Запускаете make на компе. 5. Наслаждаетесь чтением. ![]() Добавлено через 32 минуты Nexi99, а если шутя - то ваш файл должен быть известен на этапе компиляции. Это значит, что вы можете зашить его в огромный (или не очень) массив байт. Можно также разместить в ресурсах исполняемого файла, но это будет непереносимо.
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 10.09.2020, 10:52 | |
|
1
|
|
|
Комп_Оратор)
|
|||||||||||
| 10.09.2020, 11:07 | |||||||||||
|
Nexi99, конечно большие данные не стоит проверять даже так:
concharra использовать как управляющее. Тогда в исходник попадёт только нужный массив. Однако время загрузки и объём кода увеличатся. Вычисления времени компиляции сказываются на рантайме неизбежно.
0
|
|||||||||||
| 10.09.2020, 11:07 | |
|
C++14: вычисления на этапе компиляции
Ошибка на этапе компиляции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|