Ответы пользователя по тегу C++
  • Как задать точку останова при большом иcпользовании RAM?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Вообще если у программы есть необходимость следить за своим выделением памяти - то пишется кастомный аллокатор и используется в проге.
    Т.е. вы пишете свой malloc и free c блэкджеком и другой необходимой вам функциональностью - хотите не давать больше 200мб в секунду - не даете, хотите не аллоцировать более 1Гб - не аллоцируете и т.п.
    Ответ написан
    Комментировать
  • Как линковщик ищет функции?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Почти наверняка это функция в сторонней либе и будет из нее дергаться.
    Покрайней мере так, обычно реализовано на линкусах. Как оно на винде не знаю.
    Ответ написан
    Комментировать
  • Как построить двумерный график с тремя осями средствами C++, QT?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Логично что двухмерный график не умеет рисовать трехмерные векторы. Берите и сами делайте проекцию и ее загоняйте в qtcustomplot.

    Вам нужны проекции ващего вектора на единичные векторы oX (1, 0, 0) и oY (1, 0, 0); затем складываете проекции на oX и oY - это и будет проекция вектора на плоскость "графика". (ну разве что вам придется из вектора выкинуть координаты по оси Z, она так и так должна получится равно нулю)

    Гуглите как строить проекцию вектора на вектор.

    p.s.

    Ну и разумеется плоскость из моего примера выше одна из бесчисленного множества. Вы можете использовтаь любые базисы, если это нужно.
    Ответ написан
    Комментировать
  • Как из программы на c++ отправлять ответ на запрос в консоль linux?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Как вариант - использовать popen
    Ответ написан
    Комментировать
  • Linux или Windows для C++ разработчика?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Тут вопрос в неком хм... "Стеке технологий". Сам по себе C++ кроссплатформенный и, как следствие, пофиг где и как его учить - программы на чистом C++ переносимы на уровне исходного кода.

    Но как только дело доходит до прикладных задач - вам потребуется прибегать к сторонним библиотекам/фреймворкам, разным сторонним наработкам и к средствам операционной системы и так далее. Тут-то и возникает вопрос - а чем вы хотите заниматься. Даже программист под Linux и под Embedded Linux это не одно и тоже.
    Ответ написан
    Комментировать
  • Как на 32-битной платформе в переменную типа intptr_t может влезть максимальный адрес ссылки?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    зачем нужно было вообще вводить intptr_t если есть uintptr_t, в который адрес точно влезет?


    А как вы собираетесь беззанковым типом выражать смешение одного адреса относительно другого?
    Ответ написан
  • Почему функция rand() возвращает одно и то же значение?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    По-тому что seed все время одинаковый. (и, к стати, это крайне удобно для отладки).

    This number is generated by an algorithm that returns a sequence of apparently non-related numbers each time it is called. This algorithm uses a seed to generate the series, which should be initialized to some distinctive value using function srand.


    www.cplusplus.com/reference/cstdlib/rand
    Ответ написан
    Комментировать
  • Для чего нужны в CPP системные методы _exit, _open, _read, _write, _lseek, _fstat, _link, _unlink, _stat, _close, _execve, _fork, _getpid, _isatty...?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    void _exit(int i);//Завершение программы. Не актуально для контроллера (если только у вас нет системы или какого-нибудь "менеджера процессов") - сделайте бесконечный цикл или рестарт
    int _open(const char *name, int flags, int mode); //открытие файла или устройства, типа UART
    int _read(int file, char *ptr, int len); //Чтение из файла или устройства, типа UART
    int _write(int file, char *buffer, unsigned int count); //Запись в файл или устройство, типа UART
    int _lseek(int file, int ptr, int dir);//Честно говоря не помню, кажется перемещение "текущей" позиции чтения/записи в файле
    int _fstat(int file, struct stat *st);//Смотрите что делает аналогичная функция в стандартной библиотеке, я точно не помню, но что-то с получением инфы о файле/устройстве
    int _link(char *old, char *new); //
    int _unlink(char *name); //Если не ошибаюсь, удаление ссылки на файл (если она последняя - то удаление самого файла)
    int _stat(char *file, struct stat *st);//ХЗ, не помню
    int _close(int file);//Закрытие файла/устройства
    int _execve(char *name, char **argv, char **env);//хз
    int _fork();//Форк процесса. (см. выше про процессы)
    int _getpid(); //Получение ID процесса (см. выше про процессы)
    int _isatty(int file);//Судя по названию - проверка является-ли файл терминалом (фактически для контроллера проверка на UART)
    int _kill(int pid, int sig);//Убийство процесса (см. выше про процессы)
    caddr_t _sbrk(int incr);//хз
    int times(struct tm *buf);//хз
    int _wait(int *status);//Ожидание завершения потока (см. выше про процессы)


    p.s.

    Ну и это не "готовый файл с расписанными функциями", там все функции кроме read/write и exit - тупо заглушки
    Ответ написан
    Комментировать
  • Объясните: какую базу нужно иметь для изучения Dirext X [C++]?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Однозначно матан - матрицы, операции над матрицами, всякие преобразования матриц и т.п. Это для любого 3D.

    А так, строго говоря, для DirectX знать Win32 API не особо нужно. (ну некоторый минимум нужен, вам же надо как-то нарисовать окошко с вашей сценой).

    А вообще, выбор OpenGL vs DirectX это фактически выбор между Винда+XBox или все (или множество) платформ.
    Ответ написан
    3 комментария
  • Как оптимизировать программу на с++?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    printf относительно медленная штука. Очень бросается в глаза на слабом железе, если выводить очень много.

    p.s.

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

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Если просто - по-тому, что драйвер ФС гарантирует атомарность данной операции. (иначе нахрен он вообще нужен?)
    Если сложнее - то в двух словах не описать, гуглите.
    Ответ написан
    Комментировать
  • Какую IDE лучше использовать для разработки графического интерфейса C++?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Лучше всего использовать "Родную" для графической библиотеки IDE. Т.е. если вы будете использовать виндовые формы, то лучше Visual Studio, если Qt - лучше QtCreator (и нет там никаких проблем с компилятором от вижуал студии, просто чтобы он подцепился автоматом при установке, его надо ставить до установки QtCreator, либо придется в ручную настраивать. Это легко, но требует некоторого понимания того, что вообще вы делаете). Если вы делаете андроидовские гуи - используйте андроид студию и т.п.

    Почему так? Ну просто "родной" инструмент, обычно, заточен под "родную" графическую библиотеку/фреймворк.
    Можно и в не родном, но вам потребуется сильнее понимать, как именно библиотека работает (т.к. многие вещи, которые за вас делала "родная" IDE, вам придется делать руками)
    Ответ написан
    Комментировать
  • Какая есть актуальная литература для изучения C++?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Стандарт, Шилдт. А вообще надо начать с С, поскольку их "общие" особенности в литературе по C++, как правило, не рассматриваются
    Ответ написан
    Комментировать
  • Почему компилятор c++ в netbeans ругается на cout?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Первое - .h это сишные хэдеры, в плюсах просто всякие
    #include <iostream>
    Второе - уверен, что вы не указываете пространство имен. Либо в начале .cpp файла укажите using namespace std, либо пишите
    std::cout;
    std::endl;


    А вообще - давайте код.
    Ответ написан
    Комментировать
  • Что написать на С++ в 1000 строк?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Персер чего угодно - XML, JSON, можно еще свой DOM сделать;
    Читалку конфигов;
    Калькулятор ... инженерный (классы для работы с комплексными числами, перегрузка операторов спасет отца русской демокртии);
    Виртуальную машину (для брейнфака например);
    Коллекции (всякие вектора, списки, деревья), аля как в STL.

    К стати, в продолжение идеи коллекций - запилить фреймворк для чего-нибудь (например для геометрических рассчетов, типа площади/объемы/массы/плотности геометрических фигур/тел). Из плюсов - вы можете напихать кучу классов, которые реализуют разные интересные (и не очень) вещи, из минусов - вам придется обосновать почему все это в месте (ну что это не франкенштейн, как контра с модами на средневековое оружие и рейлганами и анимешными моделями игроков)
    Ответ написан
    Комментировать
  • Вывод в edit текста из .txt файла как?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Или, как вариант, заменять \n на std::endl (ибо std::endl обязан быть принятым для данной системы символом (символами) конца строки), ну или вручную заменять \n на \r\n
    Ответ написан
    Комментировать
  • Как изменить свойство элемента на форме из другого класса?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Насколько я помню - setValue - это слот, вы можете присобачить к нему сигнал от чего-то, что генерирует значение

    Если это не слот, то ParentWidget`у прогресбара сделайте слот и в нем устанавливайте значение.

    Хотя если все виджеты на одном UI - то можно и напрямую дергать. Только не забывайте все "долгие" и "потенциально долгие" вычисления делать в отдельном (от отрисовки интерфейса) потоке.
    Ответ написан
    Комментировать
  • Как проверить сигнал с микрофона?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Ну собственно гуглите как через WinAPI получить PCM с микрофонного входа.
    Ответ написан
    Комментировать
  • Какую выбрать среду для написания кода на С++?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    MinGW + Notepad++
    Ответ написан
    Комментировать
  • Будет ли рассчитано значение выражения strlen("str") на этапе компиляции или при выполнении?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Вообще нет. Но, если компилятор сочтет что ваша строка не меняется (а это так и есть), он может оптимизировать этот код, заменив его константой. К стати, он еще и len тогда может выкинуть, заменив его константой в выражениях ниже.

    Сказать что он наверняка заменит можно только точно зная какой компилятор используется и опции компиляции.

    gcc с -O3 100% выкинет эту строку и заменит константой выражения для a и b, а вот с -O0 скорее всего трогать не станет.

    Чтобы наверняка быть уверенным, что компилятор ничего не оптимизирует можно применить volatile, но в большинстве случаев для этого нет причин.
    Ответ написан
    4 комментария