Каковы эффекты встроенного? ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Каковы эффекты встроенного?

Сообщение Anonymous »

Я обсуждал с Йоханнесом Шаубом ключевое слово inline.
Там был такой код:

Код: Выделить всё

namespace ... {
static void someFunction() {
MYCLASS::GetInstance()->someFunction();
}
};
Он заявил, что:

Размещение этого как встроенной функции может
сэкономить размер кода в исполняемом файле.

Но согласно моим выводам здесь и здесь это не понадобится, поскольку:
  • [Встроенное] происходит только в том случае, если анализ затрат и выгод, проведенный компилятором, показывает его прибыльность.
  • Основные компиляторы C++, такие как Microsoft Visual C++ и GCC поддерживает опцию, которая позволяет компиляторам автоматически встраивать любую подходящую функцию, даже те, которые не помечены как встроенные.
Йоханнес утверждает, что существуют другие преимущества явного указания этого, которые я не понимаю. Например, он заявил, что

[..] «встроенный» позволяет определять функцию в программе несколько раз.

.. который мне трудно понять (и найти ссылки на него).
Итак,
  • Является ли встроенный просто рекомендацией для компилятора?
  • Следует ли это указывать явно, если у вас небольшой функция (полагаю, 1-4 инструкции?)
  • Какие еще эффекты возникают при написании строк?
  • нужно ли указывать inline, чтобы уменьшить размер исполняемого файла, даже если компилятор должен сам найти такие функции?
Есть ли что-то еще, что мне не хватает ?

Подробнее здесь: https://stackoverflow.com/questions/364 ... -of-inline

Вернуться в «C++»