• Как в цикле заполнить структуру?

    @MarkusD Куратор тега C++
    Matvey_Mt, предлагаю сослаться на пункт регламента чтобы не быть голословным. :)
    Например, П5.1 - Любые оскорбительные формулировки запрещены. За тобой уже третье нарушение в одном вопросе.
  • Как в цикле заполнить структуру?

    @MarkusD Куратор тега C++
    Matvey_Mt, встречный вопрос - это проверка твоего уровня знаний.
    Как минимум, сейчас ты узнал что указатель на поле класса - это реальность. Теперь ты можешь хотя бы пойти почитать документацию на эту тему и подумать о том, зачем я передал тебе эту информацию.
    На твой вопрос крайне легко ответить. Я этого не делаю просто потому что, фактически, твой вопрос нарушает П2.1 регламента. "Всем привет" и тому подобная лирика - туда же. Это - нарушение П3.4 регламента. А я не хочу спонсировать нарушения регламента.
    Этим я не хочу как-то задеть или оскорбить тебя. Просто я хочу чтобы ты подумал о том, что мог бы решить свой вопрос очень быстро простым чтением документации. А если пришел с вопросом, то соблюдай правила.
  • Как в цикле заполнить структуру?

    @MarkusD Куратор тега C++
    Matvey_Mt , как записать тип указателя на поле класса?
  • Какая разница на практике между clang и gcc?

    @MarkusD Куратор тега C++
    calculator212,
    Я не совсем понял этот момент, можете пожалуйста пояснить?

    Поясняю: [1], [2], [3], [4].
    GCC еще позволяет в C++ код вида unsigned i;, что тоже неоднократно отражалось в здешних вопросах. И таких вольностей у GCC много, всего не упомнишь.
    clang тоже умеет транслировать код на C и тоже умеет линковать код на C с кодом на C++. И MSCL это все тоже умеет.
    Проблема GCC именно в том, что он позволяет лишнее из кода C в коде C++. Такое поведение GCC расхолаживает пользователей и приводит к проблемам при смене транслятора.

    Я так понял, что под linux/windows предпочтительнее тоже использовать clang

    Под Windows предпочтительнее использовать MSCL, Студию и MSBuild. Под Linux предпочтительнее использовать, все-таки, GCC, т.к. это его дом родной. Под Mac и прочие - предпочтительно использовать clang.
  • Как обстоят дела с модулями C++20 и Inline оптимизацией?

    @MarkusD Куратор тега C++
    Мирон,
    То есть похоже, что Dolarun прав.

    И в чем же конкретно он прав?

    Вырванное из контекста " inline это translation unit bound semantical flag" может означать все что угодно, даже погоду на Марсе.
    Теперь фразе требуется вернуть контекст и внести конкретику. Результатом этого процесса будет строго однозначное понимание термина.
  • Как обстоят дела с модулями C++20 и Inline оптимизацией?

    @MarkusD Куратор тега C++
    Dolarun, он это делает практически со всеми функциями, для которых может посчитать алгоритмическую пользу от встраивания. Более того, в собранном тобой коде могут присутствовать как выделенные тела твоих не-inline функций, так и результаты их встраивания.
    За этот процесс отвечают настройки встраивания сгенерированного кода в твоем трансляторе.

    Ключевое слово inline[?] определяет спецификатор, которым помечаются сущности со слабым внешним связыванием. Связывание внешнее, поэтому для таких сущностей обязательным является требование ODR. В это же самое время связывание обозначено как слабое, это означает что проверка на соответствие ODR для таких сущностей проходит не в момент чтения определения сущности из объектного файла, а в момент встраивания этой сущности.
    И проверка эта выполняется таким образом, что проходят ее только полные дубликаты первого определения сущности. Если очередное определение такой сущности отличается от самого первого считанного определения, такое определение проваливает ODR и трансляция завершается с ошибкой. Само же связывание всегда производится только с самым первым определением сущности.
    Т.е. к процессу встраивания спецификатор inline имеет далеко опосредованное отношение.

    И вот давай теперь подумаем о том, какую роль модули играют в процессе линковки исходного кода и как модули могут поменять поведение слабого внешнего связывания?
  • Как обстоят дела с модулями C++20 и Inline оптимизацией?

    @MarkusD Куратор тега C++
    Dolarun , а давай разберемся, о какой именно работе ты пишешь, которую за тебя сейчас должен делать транслятор?
  • Как инди разработчику защитить права на игру?

    KotomeNami,
    Если бы всё было так просто - их просто скопировали бы на старте

    Их копировали на старте, выкладывали в альтернативные сторы. И продолжают это делать. И с Clash of Clans такое было, и с Angry Birds такое было, и с Cut the rope такое было. И с майнкрафтом, и со Starbound. Это есть всегда.
    Всегда копируют и всегда распространяют.

    Вопрос не в этом. Вопрос не в том, что копируют. Вопрос не в том, а нарушают ли эти копирователи чьи-то авторские права. Вопрос только в том, а может ли твоя игра удержать игрока достаточно долго чтобы окупиться?

    Издавая игру, ее стоит отпускать. Дальше мир будет творить с ней страшное. Играть не так, понимать не так, ковыряться в ее потрохах или вообще клеймить тебя позором. Голосует игрок за твою игру всегда только одним местом - своим кошельком. Если покупают - то и хорошо.
  • Каким способом на плюсах можно скачать страницу сайта для чтения в оффлайн режиме?

    @MarkusD Куратор тега C++
    GavriKos
    Подозреваю что можно найти готовые либы для этого дела кстати

    Webkit, да. Blink еще. Presto можно найти. Таких много. Они готовы и делают то что надо.
    В целом, это все - движки веб-браузеров.
  • Как или где онлайн можно научиться кодить игры правильно (мультитрединг, структуирование итд)?

    gusigusiggg, да-да. Я уже понял что ты отвечаешь только на свои домыслы, а не на мои слова. Всего доброго. Приходи когда появится желание общаться именно со мной, а не с собой.
  • Как или где онлайн можно научиться кодить игры правильно (мультитрединг, структуирование итд)?

    gusigusiggg,
    ты меня спросил, при чем тут параллелизм

    А где я это спросил, в каком конкретном месте?

    Дальше ты спросил, зачем мне геймдев

    А где я это спросил? Тоже, в каком конкретно месте?

    Мне просто нужны геймдев материалы и примеры красивого кода

    Кроме меня здесь мало кто другой тебе такие материалы может дать. Но для начала мне нужны точные ответы конкретно на поставленные мной вопросы.
    Насколько я вижу, точность восприятия моих вопросов у тебя довольно низкая, а ошибочность суждений - высокая.
    Я не против, оставайся с тем, что у тебя сейчас есть. Вернешься ко мне когда поймешь суть именно моих вопросов, а не результатов своего восприятия моих слов.
  • Как или где онлайн можно научиться кодить игры правильно (мультитрединг, структуирование итд)?

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

    Поэтому я и задал свой вопрос. Выбор одних людей для общения и игнор других может сильно сказаться на твоей собственной квалификации. Иногда - не в лучшую сторону.
  • Почему не работает с char[]?

    @MarkusD Куратор тега C++
    Sergei Abramov,
    а с const char* я так понимаю, это невозможно

    Давай руководствоваться не условным пониманием, а точным знанием.
    Как минимум, почему для случая с полями const char* узнать точный размер структуры MqttConfig невозможно? Размер указателя фиксирован, структура из указателей будет правильно выравнена и будет иметь правильный фиксированный размер. Скорее всего в твоем случае твой конфиг будет занимать 20Б.

    Возможно тебе стоит более детально изучить процесс запуска твоего мк и формат зашиваемого в него бинарного образа.

    Насчет литерала - я так понимаю, речь о '\0' ?

    Нет, речь о строковом литерале. Ноль - это терминальный символ, которым завершаются все строки в c++. В этом плане, после первого нуля в буфере строки дальнейший контент не важен, т.к. строка завершена. Я не совсем понимаю причин твоего беспокойства тем, что остаток твоих полей в конфиге забит нулями. Это - правильное поведение твоего транслятора.
    Я так понимаю, ты не очень уверенно владеешь c++. Хорошо, это не проблема.

    Строковой литерал - это строка справа от символа присвоения, используемая тобой для инициализации полей по месту их определения. Литералы, вообще все, изначально не имеют идентичности и размещения. У них невозможно взять адрес, получить неконстантную ссылку или определить их принадлежность к иерархии классов.
    Более подробно об этом ты можешь узнать из статьи.
    Строковой литерал немного отличается от прочих литералов тем, что в момент запроса размещения строкового литерала транслятор это размещение для литерала выделяет ровно в том объеме, в котором литерал требует.
    Строковой литерал размещается в глобальной неизменяемой секции памяти и загружается до начала исполнения твоего кода, собственно, вместе с твоим кодом.
    Ты ведь везде в своем коде, в любом его месте, можешь начать использовать строковой литерал даже не думая о механике его поведения, так почему же в конкретном месте инициализации полей ты внезапно чего-то забоялся?
    Своими сырыми массивами ты сейчас только отнимаешь свободную память у себя же в будущем, когда тебе этой памяти станет не хватать.
  • Почему не работает с char[]?

    @MarkusD Куратор тега C++
    Sergei Abramov, по разным аккаунтам ясно. Ладно.

    PubSubClient& PubSubClient::setServer(const char * domain, uint16_t port)

    Код оформляется как код. Не курсивом, не жирным, только как код. Этого в правилах не написано. Но если код написан не как код, это будет нервировать людей. Ты ведь пишешь не для того чтобы выделиться и заявить о своей уникальности, а для того чтобы тебя прочитали, поняли и помогли. Верно же? Значит тебе абсолютно незачем нервировать людей на ровном месте.
    Любой код всегда пишется для читателя. И при написании кода нужно максимум усилий направить на то, чтобы именно читателю было удобнее.
    Тебе стоит принять предложенную мной правку вопроса.

    Теперь по сути. Сигнатура у метода принимает указатель на память с типом константного символа.
    char password[20] = "password";.
    Сырой массив неконстантных символов подразумевает что ты планируешь менять его содержимое. Но ты ведь не планируешь менять? Я подозреваю что не планируешь.
    И при этом, массив неконстантных символов инициализируется строковым литералом.
    Я думаю, тебе легче будет использовать тип const char* для своих полей. Пусть в них хранятся адреса размещений литералов, которыми ты инициализируешь поля сейчас. Т.е. в плане инициализации ничего не поменяется, поменять нужно только тип полей.
  • Почему не работает с char[]?

    @MarkusD Куратор тега C++
    Sergei Iamskoi, аккаунт Sergei Abramov является твоим вторым? Это запрещено в П6.5 регламента работы сервиса.
    Ну вот теперь, когда комментарий того аккаунта удален, а этого аккаунта точно с тем же текстом - добавлен, сомневаться в нарушении уже не приходится.
  • Почему не работает с char[]?

    @MarkusD Куратор тега C++
    Sergei Abramov, какая сигнатура у метода setServer класса PubSubClient?
  • Как реализовать этот код(патерн) С++ на Java?

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

    sounddiibo, зачем ты размещаешь нечитаемые скриншоты?
    П3.8 регламента запрещает это делать.
    Тебе не нужен ответ на твой вопрос? Почему я должен ломать свои глаза об это мыло?
  • Как создать отдельный поток с методом класса?

    sounddiibo
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    Это не сообщение об ошибке, это отчет об аварийном завершении линкера.
    Сообщение об ошибке находится выше и оно будет не одно.
    Тебе надо показать настоящее сообщение об ошибке.