Задать вопрос
  • Имеется ли в C++ данный синтаксис?

    @rPman
    Смотрим исходники (как же там неудобно искать, проще было склонировать и найти в файлах)

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

    Описание аргументов ,... это variadic т.е. можно несколько аргументов писать в вызове макроса, они все передадутся как есть (есть разные способы их развертывания)

    Вот к примеру твой пример развернется в
    static vnet_feature_arc_registration_t vnet_feat_arc_ip4_unicast;
    static void __vnet_add_feature_arc_registration_ip4_unicast (void)
      __attribute__((__constructor__)) ;
    static void __vnet_add_feature_arc_registration_ip4_unicast (void)
    {
      vnet_feature_main_t * fm = &feature_main;
      vnet_feat_arc_ip4_unicast.next = fm->next_arc;
      fm->next_arc = & vnet_feat_arc_ip4_unicast;
    }
    static void __vnet_rm_feature_arc_registration_ip4_unicast (void)
      __attribute__((__destructor__)) ;
    static void __vnet_rm_feature_arc_registration_ip4_unicast (void)
    {
      vnet_feature_main_t * fm = &feature_main;
      vnet_feature_arc_registration_t *r = &vnet_feat_arc_ip4_unicast;
      VLIB_REMOVE_FROM_LINKED_LIST (fm->next_arc, r, next);
    }
    static vnet_feature_arc_registration_t vnet_feat_arc_ip4_unicast

    Заметь что последняя строчка не завершена, нет ";", значит если после вызова этого макроса поставить = ... то пойдет определение значения переменной vnet_feat_arc_ip4_unicast
    а запись через { .имя_поля=значение,...} это удобный способ инициализировать структуры
    Ответ написан
    1 комментарий
  • Первое предложение о работе, как поступить?

    Судя по обозначенным минусам - вы уже для себя всё решили.

    Я бы посоветовал, тк это первый опыт, всётаки сходить на испытательный, а если все беспокойства оправдаются - со спокойной душой уйти


    Зарплата - 500 долларов до испыта, 700 - после.

    Есть неиллюзорный шанс, что:
    1. К долларам это ни разу не привязано
    2. После испытательного так и останется 500.


    Дело в том, что позвали меня на позицию Full-stack(junior). Если бы это был фулстек веб(нода+реакт), допустим, скорее всего я бы согласился.

    Но тут надо разбираться с любыми технологиями, которые нужны заказчику(компания аутсорс). Мне сразу сказали, что надо будет и с мобилками работать и уметь деплоить и с кубернетисом работать.


    Всему можно научиться. Уточняй какой стек и думай, хочешь ли ты в этом развиваться.


    Так же из-за специфики работы, пм будет общаться с заказчиком, но будут очень частые случаи, когда надо будет созваниваться с заказчикам, уточнять какие-то моменты + презентовать продукт по результатам работы.

    Это норма для небольших компаний.


    3.Знакомые опытные ребята говорят, что фулстек джунов не существет и это вообще треш.

    Фулстек сеньоров тоже)
    Если хочешь жёстко по хардам прокачиваться, то надо более узко специализироваться.
    Ответ написан
    Комментировать
  • Берут ли на работу в IT с шизофренией?

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

    Griboks
    @Griboks
    Если вы не собираетесь выходить за рамки crud, то вот вам классический пример.

    Вы, должно быть, преобразуете данные между моделями (БД) и схемами (API). Эти данные не всегда одиночны (1 модель != 1 схема) и не всегда в одной БД, могут иметь сложные зацикленные вложенные структуры. Поэтому вам придётся не просто конвертировать полученную модель в json, но ещё и как-то её преобразовать. Вот как раз для нетривиального преобразования и нужны АСД, иначе это будет один большой цикл с множеством if и копированием кода.
    Вы скажете, что можно просто насоздавать кучу схем/моделей/хранимых процедур для всех возможных случаев. Но это долго, а написать эффективные АСД - быстрее, т.е. более оптимальный подход.

    Но учить всякие паттерны, разумеется, не требуется - только понять саму суть АСД.
    Ответ написан
    Комментировать
  • Как использовать структуры данных на практике?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Мысль совершенно правильная.

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

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

    Поэтому я бы рекомендовал их все равно изучать, но в качестве не основного, а факультативного материала.
    Ответ написан
    Комментировать
  • Почему VSCode изменяет название папки?

    На windows это не должно влиять
    Ответ написан
    Комментировать
  • Как принять число любой длины?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Вам не только принимать числа любой длины в конструкторе, вам их хранить и обрабатывать придется. Чтобы работать с данными любой длины придумали массивы. Например, передавайте строку или std::vector.
    Ответ написан
    Комментировать
  • Как сделать overflow hidden для body по нажатию?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    // Добавить
    document.body.style.overflow = 'hidden';
    
    // Убрать
    document.body.style.overflow = '';
    Ответ написан
    1 комментарий
  • Почему не подключается файл стилей к теме wp?

    Добрый день!
    Переименуйте файл function.php в functions.php
    Ответ написан
    1 комментарий
  • Какую тему выбрать для курсовой по программированию по C++?

    Игру крестики нолики на бесконечное поле...весьма интересный проект. Или что нибудь из игровых автоматов (я не имею в виду денежных....математических)...типа "Жизнь".
    Ответ написан
    Комментировать
  • Какую тему выбрать для курсовой по программированию по C++?

    @quasimodo
    Попробуйте посмотреть книгу Ч. Уэзерелла "Этюды для программистов". При желании она легко скачивается онлайн. Там много интересных тем, которые можно развивать до бесконечности.
    Ответ написан
    1 комментарий
  • Какую тему выбрать для курсовой по программированию по C++?

    AxisPod
    @AxisPod
    Дык подумайте что вам интересно где можно применить ООП в полной мере. Сделайте игру какую-нить, где игровые сущности представляют из себя объекты.
    Ответ написан
    Комментировать
  • Уменьшается ли используемая память программы?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Не гарантированно, но в некоторых случаев компилятор действительно сможет переиспользовать место на стеке под переменную a для какой-то новой локальной переменной, когда a выйдет из зоны видимости. Но чаще это место просто будет пустым до конца функции и никакой экономии памяти вы не получите.

    Но вообще, делать так для экономии памяти никогда, категорически не рекомендуется. Код становится менее читаем а экономите вы на спичках. Это локальные переменные - они на стеке. Их много можно выделить только рекурсией или большими массивами (ну не объявите вы в коде миллион локальных переменных). В обоих случаях, если стека не хватает - надо или избавлятся от рекурсии/больших массивов изменением логики, или выносить их в кучу.

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

    TheBeJIIHiu
    @TheBeJIIHiu
    Просто обычный кодер?
    Если вы не планируете играть в современные игры, то изменение жесткого диска на SSD и замена видеокарты может значительно улучшить производительность вашего компьютера. Однако, учтите, что более новые видеокарты могут потребовать больше мощности, поэтому проверьте, подходит ли ваш блок питания. Также, установка большей ОЗУ может также улучшить производительность. Чтобы узнать, какие компоненты совместимы с вашей материнской платой, посмотрите ее спецификации или обратитесь к производителю. Если вы планируете играть в современные игры, то, возможно, вам придется рассмотреть покупку нового компьютера.
    Ответ написан
    1 комментарий
  • Какую видеокарту выбрать на древний ПК?

    vovka3003
    @vovka3003
    Фрилансер. Инженер систем безопасности.
    Иль продать его дай докинуть на какой-то уже стоящий?!

    Это нельзя продавать. Лучше подарите кому нибудь (в какой-нибудь детский сад как печатную машинку).
    Соберите любой минимальный из современных и на нем ваша игрушка будет летать...
    Ответ написан
    Комментировать
  • Какую видеокарту выбрать на древний ПК?

    Adler_lug
    @Adler_lug
    Нечего там улучшать. Выкинуть все в мусорку и купить новое...
    Ответ написан
    Комментировать
  • Какая частота монитора больше подходит для 60 FPS?

    @rPman
    Лучше хуже - вопрос личного восприятия.

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

    Мне кажется, для подавляющего большинства нужны циферки
    а не реальное ощущение. выше 60 кадров нужно только кибер спортсменам, а некоторым хватит даже 30-40 (если они стабильны).

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

    upd. еще высокую смену кадров нужно дисплеям очков виртуальной реальности, там 90fps на грани минимума, все из-за особенности смены изображения при поворотах головы, но автору вопроса это не надо
    Ответ написан
    Комментировать
  • Корректно ли в C++ называть стек статической памятью?

    Vindicar
    @Vindicar
    RTFM!
    Кирилл Гусарев, по вашему определению статическая память - это секция инициализированных данных exeшника.
    ЕМНИП, C++ в эту секцию кладёт инициализирвоанные глобальные переменные. Насчёт статических локальных не уверен.

    Вообще программа имеет доступ к четырём видам памяти:
    - секция инициализированных данных выделяется загрузчиком, её содержимое загружается из EXE файла, где оно хранится как образ.
    - секция неинициализированных данных выделяется загрузчиком, её содержимое забивается нулями. В EXE файле хранится только её размер.
    - Насчёт стека не уверен. Вроде со стеком главного потока исполнения то же самое, его размер прописан в экзешнике. Но кто его выделяет - загрузчик или рантайм языка... я подозреваю, что загрузчик. Стеки дополнительных потоков выделяются по запросу программы.
    - куча выделяется по ходу работы программы. Менджер кучи Windows создаёт одну кучу для процесса, дальнейшее управление кучами - дело самого процесса.

    Всё это - только для виндовых EXE. Про линукс я не в курсе.

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

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Стек стоит рассматривать как отдельную категорию. И статической памятью его называть точно не стоит.
    Хотя бы потому, что для работы с ним есть специальные команды процессора.
    Плюс, он хоть и выделяется программе при загрузке, в отличии от статических данных, обращаться к данным в нем можно не всегда - а только ниже по стеку вызовов.
    Ответ написан
    Комментировать