У меня была дискуссия с Йоханнесом Шаубом относительно ключевого слова inline
.
Код был следующим:
namespace ... {
static void someFunction() {
MYCLASS::GetInstance()->someFunction();
}
};
Он заявил, что:
Полагая это как встроенную функцию, можно сохранить размер кода в исполняемом файле
Но согласно моим выводам здесь и здесь он не понадобится, поскольку:
- [Inline] возникает только в том случае, если анализ затрат/выгод от компилятора показывает его прибыльность.
- Компиляторы Mainstream С++, такие как Microsoft Visual С++ и GCC, поддерживают параметр, который позволяет компиляторам автоматически вводить любую подходящую функцию, даже те, которые не помечены как встроенные функции.
Однако Йоханнес утверждает, что есть другие преимущества явного указания его. К сожалению, я их не понимаю. Например, он заявил, что и "inline" позволяет вам определять функцию несколько раз в программе. У меня с трудом понимается (и нахождение ссылок).
Итак,
- Является ли
inline
рекомендацией для компилятора? - Должно ли это быть явно указано, когда у вас есть небольшая функция (я думаю, 1-4 инструкции?)
- Какие еще преимущества существуют при написании
inline
? - необходимо указать
inline
, чтобы уменьшить размер исполняемого файла, даже если компилятор (согласно wikipedia [я знаю, плохая ссылка]) должен найти такие функции самостоятельно?
Есть ли что-то еще, что мне не хватает?