• Зачем нужен амперсанд перед именем функции/метода?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    На самом деле понятнее писать вот так:
    int& Foo();

    Функция возвращает ссылку на int. Ссылка - это как указатель, только она не может указывать вникуда. Соответственно, вы не можете завести переменную ссылку сразу не инициализировав ее - а на что она будет указывать. И также ссылки, в отличии от указателей, не надо ее разыменовывать.

    Использовать можно, например, вот так:
    int& ref = Foo();
    std::cout << ref+10;


    Тут под переменную ref не выделяется память, ведь это ссылка, которая инициализируется тем, что вернула Foo. Так же сам объект не копируется. Максимум, под капотом скопируется адрес.
    Поэтому ссылки имеет смысл заводить на тяжелые объекты, чтобы не копировать их зря и не выделять память.

    Так же можно через эту возвращенную ссылку изменять основной объект:
    int x;
    int& Foo() {
        return x;
    }
    ...
    
    x = 0;
    int& ref = Foo();
    ref = 10;
    std::cout << x:

    Этот код выведет 10.

    Поэтому бывает смысл возвращать ссылки из метода объекта, если вам надо что-то внутри объекта поменять. Например, так можно сделать всякие структуры данных вроде ассоциативного массива. Какой-то метод по ключу будет возвращать ссылку на значение. И через эту ссылку можно элементу ассоциативного массива присвоить значение.

    Ну и еще, можно с этой возвращенной ссылкой работать и как с обычным int:
    int x = 2 + Foo();
    Но если вы не собираетесь менять значение внутри или не пытаетесь сэкономить на копировании объекта, то вам нет смысла вообще ссылки использовать.

    Ну и, конечно, аккуратно со ссылками надо быть. Вполне можно извернуться и получить ссылку указывающую на удаленную память. Напрямую ссылки на локальные переменные компилятор возвращать не дает, но если сначала взять адрес в указатель, а потом его разименовать и вернуть как ссылку, то вы получите undefined behavior.
    Ответ написан
    1 комментарий
  • Вопросы о релокейте и легализации. Как происходит оформление и компенсация релокейта?

    @Drno
    как договоритесь
    Ответ написан
    Комментировать
  • Вопросы о релокейте и легализации. Как происходит оформление и компенсация релокейта?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Всё это надо спрашивать у того, кто занимается вашим релокейтом. Нюансы процесса отличаются от компании к компании и от страны к стране. Я например вообще никогда не слышал о релокации внештатников.
    Ответ написан
    Комментировать
  • Что будет если слишком много ампер в БП?

    @Drno
    ничего. будет работать пока Вы не подключите на него общую нагрузку больше 2А, после чего уйдет в защиту и вырубится
    Ответ написан
    Комментировать
  • Как микроконтроллеру удаётся помимо измерения температуры, выдавать на экран номер ошибки?

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

    или по иным попутным значениям, к примеру, лямбда-зонд при нормальной работе двс выдает пилу, а сломатый или обманка такую пилу не выдает :)
    Ответ написан
    2 комментария
  • В каком формате рендерить видео разрешением 13440*2160?

    @ewgenc
    Так вам ТЗ должен был дать заказчик этого видео, в каком формате/контейнере что и как должно быть.
    Ответ написан
    Комментировать
  • Есть ли в Qt механизм локализованных иконок?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Почему ни кто не читает документацию????
    https://doc.qt.io/qt-6/resources.html

    If the user's locale is French (i.e., QLocale::system().language() is French), :/cut.jpg or qrc:/cut.jpg becomes a reference to the cut_fr.jpg image. For other locales, cut.jpg is used.

    See the QLocale documentation for a description of the format to use for locale strings.

    See QFileSelector for an additional mechanism to select locale-specific resources.

    Ответ написан
    2 комментария
  • Можно ли использовать пиратские VST для музыки в играх?

    «Авторское право» ... «Можно ли использовать пиратские ... ?» — нет, нельзя.

    Всё прочее — вопрос совести и юриспруденции. С помощью Content-id некоторые сэмплы узнать можно, некоторые нет. Должны ли вы доказывать легальность используемого софта и сэмплов — указывается (или забывается) в контракте с заказчиком музыки, как и то, какие риски и объём ответственности вы принимаете на себя.

    Очистка от копирайта / проверка прав использованной музыки, графики и пр. — головная боль выпускающих игру на рынок.

    Disclaimer. Этот ответ не основан на реальном опыте и является лишь моей интерпретацией здравого смысла.
    Ответ написан
    2 комментария
  • Почему простой цикл на c++ выполняется медленнее, чем на golang?

    @deliro
    Да хотя бы потому что оптимизатор может выбросить цикл, посчитав его ненужным. Есть оптимизации, которые умеют цикл заменять прогрессией, а здесь цикл можно вовсе удалить, тк он не влияет ни на что
    Ответ написан
    Комментировать
  • Какая разница на практике между clang и gcc?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Однажды я на подобный вопрос уже отвечал, правда там вопрос был о кроссплатформенности, а не о трансляторах.

    Какая разница между clang и GCC.
    Разница большая. GCC обладает обширной поддержкой наследия идиом и конструкций из языка C, которые, вынужденно или по своей воле, поддерживает в современном C++.
    VLA, тип по умолчанию, всевозможные изыски синтаксиса C. Это все GCC не глядя принимает за C++ код и позволяет трансляцию.
    GCC даже сегодня многократно нарушает стандарты C++ просто потому что выбрал стратегию поддержки экзотической функциональности C в коде C++. Так же GCC не хвастается и скоростью поддержки стандартов C++.
    В 2016 году Google полностью отказались от поддержки GCC в Android NDK из-за слишком плохой поддержки стандартов и слишком свободного следования стандартам C++. В этот момент GCC стал неконкурентоспособным относительно оставшихся двух самых широко используемых трансляторов.
    Clang же, наоборот, сегодня считается, буквально, бастионом идеального следования стандартам C++. Clang точно поддерживает стандарты во всех деталях, максимально быстро интегрирует изменения и добавления стандартов, позволяет в самых первых рядах поиграться с функциональностью из драфтов следующего стандарта C++.
    Clang обладает обширной системой статической и динамической проверки кода: богатый статический анализ, возможность подключения санитайзеров, поддержка C++ Core Guidelines, очень качественные отчеты об ошибках трансляции, хорошая скорость трансляции.
    Это все ставит clang в предпочтение перед GCC на третьих для GCC платформах.

    О полной совместимости между трансляторами.
    Полная совместимость между трансляторами есть. Иначе я бы не мог делать то, что я делаю. А дело мое заключается в создании полностью кроссплатформенного кода, который однозначно собирается на всех целевых платформах и на всех них выполняется так же однозначно.
    Полная совместимость между трансляторами заключается в строгом соответствии кода выбранному стандарту C++. Всё, точка. На этом к трансляторам требования заканчиваются.
    Только тут есть небольшая проблема. Каждый транслятор по-своему поддерживает стандарт и по-своему реализует неоговоренные стандартом механики. Каждый транслятор имеет свои ошибки трансляции. И вскрывается это все именно в процессе работы над кроссплатформенным кодом.

    Я в своей работе видел многое. Я видел как при смене GCC на clang люди хватались за голову и отказывались от последнего просто потому что он нашел горы нарушений стандарта, которые молча принимал GCC. Я видел как группа из 5 человек 3 месяца рефакторила код при переходе с MSVS2015 на MSVS2017 (т.е. просто при смене версии транслятора) просто потому что разработчики из рук вон плохо знают используемый ими стандарт C++.
    Я видел ошибки в clang, приводящие к неверной генерации кода. Я видел ошибки в GCC, не позволяющие использовать его для кроссплатформенной сборки. Я видел ошибки в MSCL, в результате которых последний явно нарушает стандарт, а команда его разработки отказывается это исправлять потому что "иди нафиг".

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как замерять время выполнения функции?

    Можно воспользоваться парой clock_gettime / clock_getres.

    как можно искусно замедлить выполнение

    Можно организовать искусный цикл вокруг замеряемой функции и разделить его общее время выполнения на количество итераций. Но детали зависят от того, какое именно время вы там пытаетесь померить. Т.е. если там важны эффекты от кеша, то тупой цикл может быть недостаточно искусным.
    Ответ написан
    Комментировать
  • Форматирование смонтированного диска?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что будет с диском 1, если его смонтировать в папку диска 2 и затем отформатировать диск 2?

    Нельзя стандартными средствами "отформатировать" "диск" который примонтирован, а "диск 2" должен быть примонтирован, чтобы в его "папку" можно было смонтировать "диск 1".
    Если наплевать на условности и зафорсить форматирование на уровне блочного устройства, то с примонтированной файловой системой на диске 2 всё будет плохо, а диску 1 ничего не будет.
    Ответ написан
    Комментировать
  • Почему не включается компьютер, если включен жесткий диск?

    xez
    @xez Куратор тега Железо
    TL Junior Roo
    Вы не смарт сам отключаете, скорее всего, а его проверку.
    После загрузки можно посмотреть что там в смарте страшного.
    Скорее всего диску конец.
    Ответ написан
    2 комментария
  • Какой максимальный ток может проходить через кнопку, рассчитаную на 0.5A 50V, если напряжение цепи 5V?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Напряжение на кнопках указывают для определения изолирующих (в разомкнутом состоянии) и искрогасящих параметров кнопки. Чем больше напряжение, тем больший зазор нужно делать между контактами.
    Ток же определяет какой будет нагрев в замкнутом состоянии. Кнопка - это не нагревательный прибор, у нее должно быть миимально енапряжение и в замкнутом виде она делает короткое замыкание. На её контактах в замкнутом виде не может быть ни 50 ни 5 вольт. Если на контактах замкнутой кнопки 5 вольт, то кнопка неисправна, у нее плохой контакт и по ней шпарит ток, гораздо выше озвученного.

    Ещё раз. На кнопке или любом выключателе либо напряжение (в разомкнутом виде), либо через нее течет ток (в замкнутом состоянии).
    Мощность на ней может какая-то рассеиваться, но уж точно не 25 ватт. Там будут миливатты.
    Ответ написан
    3 комментария
  • Почему в телефонных номерах не могут сделать аналог DNS?

    xez
    @xez
    TL Junior Roo
    Потому что в телефонии используются древние, кривые, дрявые протоколы. Во времена, когда gsm телефония получила широкое распространение, ещё никому в голову не приходило, что кто-то будет спамить звонками на сотовый телефон (ага, по доллару за минуту). Надо было думать еще об обратной совместимости, т.к. подавляющее большинство телефонов просто не имело никакого экрана, а те, что имели - выводили тест в 1-3 строки. Да и понятия о прогрессе тогда были несколько другими.
    Телефон звонит? Без проводов? Номер даже определяется? Это было настоящей фантастикой!
    Ответ написан
    2 комментария
  • Перенос информации с M.2 на M.2?

    @ewgenc
    Купить внешний usb-кейс на али для ssd m2. Стоит в районе 500-1.5 т.р. Потом в него поставите старый ssd, будет большая «флешка».
    Лично я бы поставил на новый диск систему заново, чтоб не тащить гору накопившегося за годы хлама и ошибок.
    Ответ написан
    2 комментария
  • Будет ли скомпилированный код C++ работать на всех архитектурах процессора?

    xez
    @xez
    TL Junior Roo
    Очевидно же, что нет
    Ответ написан
    Комментировать
  • Подключение к ANDROID LTE по ssh коридору?

    hint000
    @hint000
    у админа три руки
    iptables не при чём. На вашем девайсе не установлен sshd (сервер ssh).

    ssh и другие сервисы работают не на какой-то магии, а потому что определённая программа (сервер) работает и на каком-то порту ожидает подключение. Когда такой программы нет или она не запущена, то хоть заоткрывайтесь в iptables - отвечать на запрос некому.
    Ответ написан
    2 комментария