Поделиться через


Внутренние функции компилятора

Большинство функций, содержащихся в библиотеках, но некоторые функции, встроенные (то есть встроенные) компилятор.Они называются как встроенные функции или встроенные функции.

Заметки

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

Использование встроенных функций влияет на переносимость кода, потому что встроенные функции, доступные в Visual C++ может быть недоступен, если код компилируется с помощью других компиляторов и некоторые встроенные функции, которые могут быть доступны только для некоторых архитектур целевой доступны не для всех архитектур.Однако встроенные функции, обычно более компактным, чем встроенной сборки.Встроенные функции требуются для 64-разрядных архитектур, где встроенной сборки не поддерживается.

Некоторые встроенные функции, такие как __assume и __ReadWriteBarrier, предоставляют сведения для компилятора, который влияет на поведение оптимизатора.

Некоторые встроенные функции доступны только как встроенные функции и некоторые доступны функции и встроенных реализаций.Можно указать компилятору использовать внутренние реализации одним из двух способов, в зависимости от того, нужно ли включить только определенные функции или нужно включить все встроенные функции.The first way is to use #pragma intrinsic(intrinsic-function-name-list).Прагма-директива может использоваться для указания внутренних один или несколько встроенных функций, разделенных запятыми.Вторым является использование /Oi (Создание встроенных функций) параметр компилятора, который делает доступными все компоненты на данной платформе.В разделе /Oi, используйте #pragma function(intrinsic-function-name-list) для принудительного вызова функции для использования вместо встроенный.Если документация для конкретного внутренние примечания, процедура доступна только встроенный, то внутренние реализации используется независимо от того, следует ли /Oi или #pragma intrinsic указан.Во всех случаях /Oi или #pragma intrinsic позволяет, но не заставляет оптимизатор использовать встроенный.Оптимизатор может по-прежнему вызывать функцию.

Некоторые стандартные функции библиотеки C/C++, доступные в встроенных реализаций на некоторых архитектурах.При вызове функций CRT, внутренние реализации используется, если /Oi указаны в командной строке.

Файл заголовка, Intrin.h, который объявляет прототипы для встроенных функций.Кроме того некоторые заголовки Windows объявления функции, которые сопоставляют на подставляемая компилятором.

В следующих разделах перечислены все встроенные функции, доступные в различных архитектурах.Дополнительные сведения о работе встроенные функции для конкретного целевого процессора обратитесь к документации производителя ссылки.

См. также

Ссылки

Ключевые слова C++

Другие ресурсы

Ссылка РУКОЯТКИ ассемблера

Ссылка ассемблера макроса (Майкрософт)

Справочник по библиотеке времени выполнения языка c