inline в C++

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ธ.ค. 2024

ความคิดเห็น • 16

  • @Sergei_Sai
    @Sergei_Sai 4 ปีที่แล้ว +8

    Начиная с 17-го стандарта благодаря inline можно инициализировать static поля внутри класса/структуры:
    struct Same {
    static inline int value = 5;
    };

  • @ДмитрийБузницкий-б3н
    @ДмитрийБузницкий-б3н 2 ปีที่แล้ว

    Спасибо, Володя, за этот урок

  • @dominuspiritus
    @dominuspiritus 4 ปีที่แล้ว +1

    inline ещё нужен, чтобы соблюдать правило odr. В Вашем примере было бы множественное определение (если делать include в main.cpp и lib.cpp). В этом случае этот keyword нужен, чтобы функция была определена единожды. По этой причине нужно все реализации функций в .h файлах помечать inline (если они находятся вне тела класса)

  • @Алексей-о9б4г
    @Алексей-о9б4г 4 ปีที่แล้ว

    Спасибо за видео!

  • @МаксимХвостов-м1й
    @МаксимХвостов-м1й 4 ปีที่แล้ว +2

    Спасибо Володя, но вы немного перепутали - стандарт частично упраздняет volatile,
    inline как уже отметили в комментариях давно является рекомендацией повышающий порог при котором компилятор решает делать функцию встраиваемой см Jason Turner C++ Weekly - Ep 136 - How `inline` Might Affect The Optimizer
    Если заглянуть в новый код GCC range library то можно заметить что разрабы inlin'ом не брезгуют, есть предложения добавления аналога force_inline в стандарт в виде атрибута. Инлайнить теперь можно статические переменные. Короче всё выглядит так что использование ключевого слова inline в C++ только развивается :)

    • @amir32806
      @amir32806 4 ปีที่แล้ว

      Время покажет. :) Возможно inline постигнет такая же участь как и register.

  • @ИванШл
    @ИванШл 3 ปีที่แล้ว

    Пэй Мэй от мира программирования

  • @Cent72984
    @Cent72984 2 ปีที่แล้ว

    По вашему последнему примеру, компилятор ругается без слова инлайн, как его добавляю все ок компилируется)

  • @nikolaysokolov9027
    @nikolaysokolov9027 4 ปีที่แล้ว

    Спасибо!

  • @torskandinav4634
    @torskandinav4634 4 ปีที่แล้ว +1

    Не знаю почему в ++ хотят отказаться от inline, В kotlin я его использую для того что бы не было стирания типов, и это прям очень нужная иногда вещь, но опять inline надо с умом применять, тут я думаю так же.

    • @ИванОсинин-с7и
      @ИванОсинин-с7и 4 ปีที่แล้ว

      Я дурак использовал инлайн с многоточием в аргументах функции

    • @torskandinav4634
      @torskandinav4634 4 ปีที่แล้ว

      в доках про это написано вроде, если ты про аналог джавовского vararg говоришь.

  • @BobiBobObana
    @BobiBobObana 4 ปีที่แล้ว

    расскажи пожалуйста про cmake

  • @ИванОсинин-с7и
    @ИванОсинин-с7и 4 ปีที่แล้ว

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