Пространства имён
Варианты
Действия

inline specifier

Материал из cppreference.com
< cpp‎ | language

 
 
Язык С++
Общие темы
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 

[править] Синтаксис

inline function_declaration

[править] Описание

Встроенный ключевое слово намеками дали компилятору выполнять оптимизацию. Компилятор имеет право на свободу игнорировать этот запрос.
Оригинал:
The inline keyword is a hint given to the compiler to perform an optimization. The compiler has the freedom to ignore this request.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Если компилятор встраивает функции, он заменяет каждый вызов этой функции с реальным телом (без генерации вызова).
Оригинал:
If the compiler inlines the function, it replaces every call of that function with the actual body (without generating a call).
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Это позволяет избежать дополнительных накладных расходов созданные вызовом функции (размещение данных в стек и извлечения результата), но это может привести к большим исполняемый код функции должен быть повторен несколько раз.
Оригинал:
This avoids extra overhead created by the function call (placing data on stack and retrieving the result) but it may result in a larger executable as the code for the function has to be repeated multiple times.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Результат аналогичен Функция подобных макросов
Оригинал:
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Тело функции должны быть видимыми в текущем единицу перевода.
Оригинал:
The function body must be visible in the current translation unit.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Класс методы, определенные внутри класса тела неявно встроенные.
Оригинал:
Class methods defined inside the class body are implicitly declared inline.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Пример

inline int sum(int a, int b)
{
    return (a + b);
}
 
int c = sum(1, 4);
// if the compiler inlines the function the compiled code will be the same as writing
int c = 1 + 4;