Задать вопрос
  • Почему не подключается OpenVPN?

    @res2001
    На сервере в логах тишина, как будто никто и не пытается подключиться.

    Тут больше интересно, что в логах у клиента, и хотелось бы увидеть чуть больше клиентского лога.
    Видимо, все таки трафик где-то блокируется. Проверяйте еще раз фаерволы. Попробуйте выключить все доступные вам фаерволы на пути следования пакетов. Можно попробовать сменить порт ВПН на какой-нибудь стандартный TCP (tcp/443 например).
  • Как узнать размер незаполненного массива в c++?

    @res2001
    Dmitrii, Мой пост больше для автора вопроса, на подумать. Он ищет универсальных решений и ему тут рады предлагать. Но реальность такая как я ее описал.

    strlen и "сырые" строки работают по принципу описанному во втором абзаце моего поста. Все функции работающие с сырыми строками знают, что внутри строки не может быть нулевого символа - это гарантируется алгоритмически.
    В некоторых случаях алгоритмически принимаемые значения никогда не используют какие-то биты. Эти биты можно использовать как признак отсутствия значения. Опять же - это вариант из второго абзаца.

    Хранить длину в первом элементе - то же самое, что хранить количество заполненных элементов (третий абзац). И не важно где именно вы храните количество заполненных элементов. Я бы не стал смешивать сущности.

    Большинство из предложенных вариантов может быть сведено к двум вышеперечисленным.

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

    @res2001
    А почему INT_MAX, а не INT_MIN, например, или любое другое значение?
    Во встроенных стандртных типах данных нет значений обозначающих "отсутствие значения". Любые значения являются "нормальными" для типа. Даже когда вы объявляете переменную без инициализации, она будет иметь какое-то значение, да это значение мусорное или случайное, но оно вполне "нормальное". Даже если рассмотреть float или double - там есть значения NaN и Inf, но и эти значения "нормальные" - они могут появляться в ходе обычных арифметических вычислений и их нельзя интерпретировать как "отсутствие значения".

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

    Наиболее универсальный вариант - хранить отдельно размер массива и количество заполненных элементов. Например, так происходит в std::vector, и думаю что в std::string примерно так же.
    Но это работает только для случая, когда все не используемые элементы лежать в конце массива. Этот подход не подойдет, когда не используемые элементы могут быть в произвольной позиции.
  • Как максимально очистить диск C?

    @res2001
    Krenicc, Кстати, стандартный виндовый менеджер очистки дисков очень не плохо справляется со своей работой. Рекомендую к использованию.
  • Как максимально очистить диск C?

    @res2001
    Krenicc,
    Это нормально устанавливать программы на другой диск

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

    На счет размера системного диска - да, у вас маленький диск. Вместо того, что бы все время бороться за место, подумайте над тем как его расширить.

    Для примера. У меня Вин11 профили пользователей целиком перенесены на другой диск, но винда, месяца 3 назад установленная, уже отъела больше 100Гб. Пока не парюсь - места хватает.

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

    @res2001
    Vilfredo KKK, https://en.cppreference.com/w/c/string/byte/strncpy
    По size_t: смотрите по ошибкам на какую переменную ругается компилятор, меняете ей тип на предложенный компилятором, компилируете, опять смотрите ошибки и т.д. пока ошибки не исчезнут.

    Надо иметь ввиду, что когда вы выполняете какие-то операции с разными типами (арифметика, сравнения, присваивания, ...), то компилятор приводит операнды к какому-то одному типу, а затем выполняет действие. Процессор не может выполнять операции с разными типами. Правила приведения типов описаны в стандарте языка.
    При автоматическом приведении типов могут возникнуть ситуации, когда компилятор должен приводить более широкий тип к менее широкому, а это неизбежно приводит к потере данных, как в вашем случае (size_t->int). Поэтому компилятор выдает ошибку, заставляя программиста дополнительно подумать над этим местом в программе. Как правило, компилятор прав в своих сообщениях и стоит к ним прислушиваться, хотя бывают и исключения.
  • Как сменить раскладку на английскую по умолчанию в Windows 11?

    @res2001
    Похоже на то, что вы вместе с указанной настройкой еще поменяли и "Язык интерфейса Windows" чуть выше на первом скрине.
  • Как определить занятость l2tp или ikev2 кем то?

    @res2001
    WebAirStudio,
    Только в моем случае VPN нужен, чтобы обойти NAT провайдеров пользователей. Нужно открыть определенный порт. Этот порт на 1 сервере только 1. Соответственно 1 сервер может использовать только 1 пользователь. Потому что если на входящий порт придет пакет, кому из 2 пользователей он предназначается?

    На сколько понял ВПН сервер у вас будет на Ubuntu в единственном числе. Все остальное - ВПН клиенты. Для ВПН клиентов абсолютно без разницы какой они используют порт, важен порт на ВПН сервере. На ВПН сервер к одному порту может подключится много ВПН клиентов с произвольных портов. ВПН сервер сам знает какому клиенту предназначается какой трафик и маршрутизирует его (то же самое делает и стек TCP/IP без ВПН).
    На одном компьютере может быть настроено и одновременно активно несколько клиентских ВПН сессий одного типа и они даже не будут друг другу мешать при правильной конфигурации.
  • Как думаете, с чем связана ошибка и как ее исправить?

    @res2001
    Vilfredo KKK, Я же не писал "везде". Там где это оправдано/нужно/логично.
    Например str_len явно просится в size_t.
    Ошибки компилятора могут указывать на потенциальные места, где, возможно, требуется использование size_t, Но это по любому ваше решение, а не мое и не компилятора.
    Учтите, что это потянет за собой и другие изменения. Например выражение i <= str_len начнет сравнивать знаковый тип с беззнаковым, что так же вызовет преобразование типов и скорее всего компилятор начнет ругаться тут, может и еще где-то. Так что i то же просится в size_t и т.п.
    Вариант с cast можно обезопасить явными проверками, что значение в size_t влазит в int и только после этого делать cast.
  • Как получить результат из exec с русскими символами?

    @res2001
    Artem Mamaev, Особой роли не играет. По умолчанию в винде в консоли стоит кодировка cp866 - старая досовская кодировка, даже в Вин11.
    Так что нужно перекодировать в нужную вам кодировку. Как это сделать на пыхе не скажу.
    Консольная команда chcp может показывать или менять текущую кодировку. Но эта команда работает только в cmd.exe и ее изменения действуют только на текущую консоль. В вашем случае консоль запускается, видимо, в скрытом режиме и не факт, что exec запускает cmd.exe.
  • Почему типы из заголовка cstdint доступны без его включения?

    @res2001
    Ни то ни другое.
    Возможно, этот заголовок подключается где-то внутри других заголовочных файлов.
    Этот файл у вас не единственное включение в вашей программе?
  • Проблема автозапуска exe файла?

    @res2001
    Каталог по умолчанию может, конечно, зависеть от способа автозапуска. Но скорее всего он будет c:\windows\system32. Так что без прав администратора туда ничего записать не получится (да оно и не нужно).
  • Как удалить папку по шаблону в консоле windows?

    @res2001
    JaFFFar, Ок. Значит не умеет в маску. Проверил, у меня есть rmdir в составе msys2, похоже это она умеет удалять по маске, но это не стандартная утилита. Можете найти любую другую с тем же функционалом. Не тащить же msys2 ради одной утилиты. Хотя с другой стороны, там в составе весь набор линуксовых утилит и много другое.
    Но если вам нужна работа "из коробки", то лучше использовать стандартный вариант.
  • Как удалить папку по шаблону в консоле windows?

    @res2001
    JaFFFar, Команда rmdir test_* по моему должна работать.
  • Почему компилятор не предупреждает о преобразовании int в uint8_t?

    @res2001
    Qubc, Можно добавить опцию -Wconversion, должно и во втором случае появиться предупреждение.
    -Wnarrowing - активизируется через -Wall, а -Wconversion нет.
    Это я про gcc.
  • Как войти в Windows 10 после неудачной смены домашнего каталога?

    @res2001
    Попробовал переименовать через MMC

    Что это значит? Через ММС можно делать 100500 различных действий. Опишите, как конкретно вы пытались переименовывать каталог.
    Для таких случаев полезно иметь еще одного пользователя на компе с админскими правами. Подойдет стандартный администратор, который по умолчанию заблокирован.
  • Как работает (примерно) отображение таблицы виртуальных функций в отладчике msvc?

    @res2001
    Qubc, Имеете ввиду формат отладочной информации? Да, он может быть другой.
    Но ничто не мешает отладчику MS понимать формат gcc. Наоборот, может быть сложнее, т.к. у микрософта, возможно, формат закрытый.
    Я тут темой не владею, давно не использую MSVS. Возможно ошибаюсь в своих предположениях
  • Как работает (примерно) отображение таблицы виртуальных функций в отладчике msvc?

    @res2001
    Qubc, Тут может быть интересно другое - если подсунуть микросовтовскому отладчику программу собранную gcc, например. Что он будет показывать? Предполагаю, что он вообще не покажет таблицу виртуальных функций.
    Если это так, то в примере отладчик пользуется предварительно известной информацией о содержимом указателя.

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

    @res2001
    Или пойти в IoT, там то же программы и программисты.
    Или в промышленную автоматизацию. Или в разработку ОС, баз данных, фреймворки разные.
    Ентерпрайз в конце концов - на каждом предприятии куча задач, которые можно и нужно автоматизировать. И у меня складывается впечатление, что в массе своей руководство предприятий (крупных и средних) этого не понимает, а следовательно простор для деятельности программистов огромный. И в нашей стране, по большому счету, все только начинается.
    Сейчас какую железку современную не ковырни везде есть процессор, который надо сначала запрограммировать.
    Конечно, там где нужно обрабатывать большие объемы и/или на большой скорости, то подключают специализированные микросхемы (ASIC), в которых уже в железе реализован алгоритм. Но алгоритм этот сначала отлаживают в "обычных" программах и только потом переносят в железо.
  • Каковы правила конвертации указателя на массив неопределенной длины в указатель на массив определенной длины?

    @res2001
    Чтоб частично снизить зависимость от компилятора в подобных "тонких" вопросах, есть смысл задавать компилятору конкретный стандарт языка и опцию -pedantic, чтоб стандарт соблюдался более полно.
    Ну и -Wall -Wextra - это само собой, и может быть даже -Werror.