Задать вопрос
  • Сломал терминал командой echo, как восстановить?

    @res2001
    Если ты покажешь исходники, то кто-нибудь сможет подсказать.
  • Какие есть библиотеки для запуска ELF и .so файлов под Windows?

    @res2001
    Думаю, так это работать не будет. И в обратную сторону то же не будет.
    Вы не сможете использовать в приложении под одну платформу библиотеки, написанные под другую платформу.
  • Пишу кейлоггер на c++ и встретился с ошибками. Как их пофиксить?

    @res2001
    AramBaram, Это не значит, что совет не правильный. Разбирайтесь с ошибками дальше.

    Вообще в MSVC можно использовать тип TCHAR. В зависимости от настройки проекта он будет принимать значение либо char, либо wchar_t. Так же все текстовые константы заворачивать в
    TEXT("это константа")
    Это автоматически преобразует константу либо в char, либо в wchar_t (так же как с TCHARом).
    В свойствах проекта есть настройка, что-то типа "использовать Unicode" ... не помню как она точно звучит. Вот в зависимости от этой настройки и работают вышеописанные макросы.
    Рекомендую всегда использовать Unicode.
  • Реализация memcmp без библиотек?

    @res2001
    Есть какие-то проблемы скопировать память заданного размера из одного заданного адреса в другой? Тогда возьмите учебник по Си, почитайте про указатели, адресную арифметику.
  • Как реализовать скриптинг и компиляцию игр в игровом движке с использованием c++?

    @res2001
    Anthony228357, В любом случае движок не должен ничего знать о вышестоящем уровне (хоть в первом, хоть в третьем варианте), это вообще никак с компоновкой не связано. Если вы закладываетесь на то, что движок что-то там предполагает о пользовательском коде (или будет его анализировать каким-то образом), то это гиблое дело. Движку этого не нужно.
    Пользовательский код будет знать об интерфейсе движка через файлы заголовков, где вся нужная информация для вызова методов и функций движка будет. Дальше вступают в действие наследование и виртуальные методы.

    Разве есть какой-то способ вызывать функции в файлах с описанием класса?

    Функции будут вызываться тогда, когда программа уже будет собрана и все зависимости удовлетворены. Пока вы пишите код и для компиляции достаточно информации (содержащейся в заголовках) о имени, типе возвращаемого значения и количестве и типе аргументов функций и методов.
    При компиляции любых программ на С/С++, состоящих из нескольких файлов исходного кода, компилятор ВСЕГДА компилирует файлы по отдельности. При компиляции каждого конкретного файла компилятор ничего не знает о других файлах исходного кода и он в них не заглядывает. Это не касается файлов заголовков, которые подключаются внутри компилируемого файла исходного кода, их компилятор, конечно включает в сборку.
    Только на этапе линковки полученные объектные файлы объединяются в один исполняемый файл, вот тогда линковщик и должен разрешить все зависимости. В случае второго варианта линковщик разрешит зависимости от движка, т.к. статическая библиотека движка будет участвовать в линковке. Точно так же линковщик найдет main() в статической библиотеке движка и успешно будет ее использовать.
  • Не понимаю почему не делается пуш в гит?

    @res2001
    Ogurchik-007, Написано же "Permission denied" - у вас нет прав на эту операцию. Обращайтесь в вашу школу, чтоб вам дали права, к обращению приложите этот лог.
  • Как избавиться от червя или что это за штука?

    @res2001
    Оба GUIDа из отчета связаны с Edge. Попробуйте удалить его из системы вместе с IE, если он у вас вдруг еще остался.
  • Как реализовать скриптинг и компиляцию игр в игровом движке с использованием c++?

    @res2001
    Anthony228357, Какая схема вам больше по душе ту и можно организовать.
    1. Вы можете поставлять свой движок в виде исходного кода. Тогда просто добавляете пользовательский код в сборку и можно собрать монолитный исполняемый файл или динамическую библиотеку.
    2. Если движок не хотите поставлять в исходном коде, то можете поставлять его в виде статической библиотеки и точно так же компоновать с пользовательским кодом, только движок в сборку будет добавляться на этапе линковки.
    3. Движок в виде исполняемого файла или dll. Пользовательский код собирается в одну или несколько dll. Внутри движка реализована схема загрузки пользовательских библиотек (add-on/plugin).
  • Как реализовать скриптинг и компиляцию игр в игровом движке с использованием c++?

    @res2001
    Я далек от игроделанья, но у вас на лицо просто иерархия классов с виртуальными методами.
    Пользовательский скрипт для реализации своего функционала должен наследовать какой-то ваш класс и переопределять нужные ему методы. В реализации базового класса должна быть реализация базового функционала этих методов.
    Ваш движок вызывает в нужных местах виртуальные методы базового класса, тем самым вызывается пользовательская реализация этих виртуальных методов.
    Таким образом, не нужно парсить пользовательские скрипты - пользователь просто использует готовую иерархию классов вашего движка.

    Классы могут импортироваться из DLL. Запихивать пользовательские скрипты в одну или несколько DLL - в принципе особой роли не играет. С одной DLL работать проще. Можно вообще не использовать DLL, а собирать один готовый исполняемый файл. Это все на ваше усмотрение, при правильной реализации все варианты рабочие.
  • Как переписать данный кусок кода под BASH?

    @res2001
    Покажите хотя бы ваши попытки реализации.
    Что вам конкретно не понятно?
    Bash script гораздо более гибкий язык, чем bat. К тому же в никсах много продвинутых инструментов командной строки (sed, grep, awk, find, ...), которые можно использовать из bash скрипта.

    В вашем случае циклы можно переписать примерно так:
    for var in assets lib libs unknown
    do
      echo $var
    done

    for var in $(sfk list ...)
    do
      echo " $var"
    done

    С условиями думаю сами разберетесь.
    В инете полно сайтов с описанием возможностей, а так же есть годная официальная документация.
  • Почему значение типа плавающей точки уменьшается?

    @res2001
    Евгений Шатунов,
    Поэтому из 9 сложений половина отклонит результат в большую сторону, а вторая половина - в меньшую. Сам же результат так и останется в пределах одного эпсилон от идеального значения.

    Если операнды представлены точными числами, то вы правы - погрешность будет в пределах epsilon.
    Но операнды из примера автора уже содержат в себе погрешность (в каждом по epsilon). Вот и получится 10*epsilon для 10 сложений (это для нашего конкретного примера) - просто идеально сложили 10 операндов содержащих погрешность.
    А теперь к этим 10*epsilon добавьте еще погрешность результата (предположим, что погрешности промежуточных результатов компенсировались и осталась только погрешность последнего вычисления). Будет 11*epsilon в худшем случае.

    Помнится как-то была у меня задача, очень похожая на пример автора, где в цикле надо было что-то посчитать. Один из множителей в формуле был коэффициент, зависящий от индекса цикла, т.е. примерно так: f = i * const, где i - целый индекс цикла, const - константное число с плавающей точкой. Дальше f использовалась как множитель в формуле.
    Сначала в целях некоторой оптимизации я считал f так: f += const - сложение чисел с плавающей точкой работает быстрее, чем умножение.
    В итоге формула давала достаточно существенную погрешность, с которой нельзя было мирится.
    Когда я заменил вычисление f через умножение, то существенная погрешность исчезла.
    Просто много сложений в конечном счете накапливают погрешность и через какое-то количество итераций погрешность начинает выходить за рамки допустимого. А при умножении погрешность минимальная и не копится.
    В моем примере расчет велся во float, поэтому существенная погрешность проявлялась достаточно быстро.
  • Почему значение типа плавающей точки уменьшается?

    @res2001
    Евгений Шатунов, versidue,
    Результат твоих 10 сложений будет где-то близко к 1.0 в пределах отклонения, не дальше чем

    Думаю, что не дальше чем epsilon*10, т.к. каждое сложение будет добавлять свою ошибку.
    Но учитывая, что ошибка может быть как в плюс, так и в минус, то суммарная ошибка стремится к нулю, но, конечно, нулем никогда не будет (разве что сильно повезет).
  • Почему операция 0.0 / 0.0 выдает ошибку?

    @res2001
    versidue, Дык это же ошибка компиляции, а не ошибка выполнения.
    Понятное дело - компилятор видит явное использование деления на ноль и сообщает об этом. Стоит только немного спрятать код, то он уже не обращает на это внимания.
    Кстати, считать ту или иную ошибку ошибкой или предупреждением можно с помощью опций компилятора: https://docs.microsoft.com/en-us/cpp/build/referen...
    Если сделаете так, то компилятор ругнется, но программу скомпилирует (если не будет других ошибок).
  • Почему операция 0.0 / 0.0 выдает ошибку?

    @res2001
    Ошибку можно увидеть целиком?

    На типичных процессорах (Intel/AMD и др.) деление с плавающей точкой выполняется аппаратно. Соответственно код на С++ просто использует результат аппаратных вычислений.
    При делении на 0, обычно, возможно 2 варианта развития событий:
    1. Аппаратно возвращается NaN. В большинстве случаев так и происходит
    2. Генерируется исключение FE_DIVBYZERO
    Это поведение регулируется стандартной библиотекой. Как правило используется 1 вариант. Но в своей программе вы можете использовать и второй. По ссылке представлены функции стандартной библиотеки, которыми можно управлять этим поведением.
  • Как использовать две сетевые карты одновременно?

    @res2001
    Василий Иванов, Похоже вы к одному и тому же домашнему роутеру подключили ноут кабелем и WiFi. И конечно получили адреса из одной сети. В таком случае стек TCP/IP просто использует первый по списку адаптер всегда.
    Когда же вы добавили в конфиг адрес вручную, новый адрес, видимо, вы взяли от балды и такой сети у вас нет. Ожидать, что подобная комбинация будет работать довольно глупо.
  • Где то слышал что префиксный инкремент работает быстрее чем постфиксный. Это так?

    @res2001
    Денис Загаевский, Уверен, что они вполне умны, чтоб с этим справляться в большинстве случаев.
    Но сможет ли компилятор провести оптимизацию во всех случаях - не знаю.
    Т.к. правило применения инкремента/декремента простое и следовать ему не составляет труда (а после некоторого времени вырабатывается привычка), то можно и облегчить работу компилятора. И быть уверенным, что там где надо используется облегченная версия.

    Кроме того явное использование разных форм инкремента там где нужно, может говорить о том, что программист в курсе отличий операторов и использует эти различия осознанно.
  • Что делать, если при попытке внести изменения в папке документы, выдаёт ошибку, прикреплённую в скриншоте?

    @res2001
    Денис Шпак,
    что такое каталог с профилем?

    Это каталог, который обычно расположен в папке c:\Users и имеет имя совпадающее с именем пользователя.
    Уточнить путь вашего профиля можно командой в командной строке:
    echo.%USERPROFILE%
    Не переименовывается он, потому что вы залогинены этим пользователем и каталог заблокирован всеми приложениями, которые у вас работают. Я же писал - надо залогиниться другим пользователем, этим вы освободите свой профиль. Если другого пользователя нет - создайте нового, потом удалите. Новый пользователь должен иметь права на ваш каталог или права администратора.
    не знал, что он вредоносный, вычитал о нём на каком-то сайте

    Не верьте всему, что пишут в интернете! Мне можно :-D
  • Что делать, если при попытке внести изменения в папке документы, выдаёт ошибку, прикреплённую в скриншоте?

    @res2001
    Денис Шпак,
    удалил все junk files

    Зачем? В профиле полно ссылок, винда сама их использует. Ничего удивительного, что какой-то функционал не работает, когда вы ломаете стандартную конфигурацию.

    Если восстановиться не получится, можно текущий каталог с профилем переименовать, залогинившись другим пользователем, после этого залогиниться вашим пользователем, винда создаст новый чистый профиль. Потом вручную из старого профиля перенесете файлы в новый. Удалить старый профиль.
  • Работа с 127.0.0.0/8 на одном хосте?

    @res2001
    DDwrt100,
    Если разделить по ip адресам, по мне, будет красивее.

    Довольно сомнительное утверждение :-)
    такой велосипед городил

    Такого не городил, всегда достаточно было разных портов. Но теоретически все должно работать.
    Будут неожиданности - всегда можно перейти на разделение портов.
  • Выдаёт ошибку при установке любой windows?

    @res2001
    Протестируйте память, потом тест поверхности диска.
    Используйте какой-либо загрузочный диагностический набор, типа adminpe.ru.