编译器内部函数
大多数函数都包含在库中,但某些功能内置的 (也就是说,内部) 编译器。这些被称为内部函数或内部函数。
备注
如果函数是一个内部函数,该函数的代码是内联通常插入,避免的函数调用系统开销,并允许高效计算机指令发出该函数。内部通常是比等效的内联程序集,因此可以使用一些优化,优化程序可以内置知识的多少内部函数的行为,因为不能使用内联程序集时。此外,优化程序可以以不同的方式展开内部、 对齐缓冲区以不同的方式,或进行其他调整,具体取决于上下文和调用的参数。
内部函数的使用会影响代码的可移植性,因为 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 头文件声明映射到编译器内部对象的函数。
以下各节列出了各种体系结构上提供的所有内部函数。有关特定的目标处理器上的内部函数的工作方式的详细信息,请参阅制造商的参考文档。