Sun Studio 12:C 用户指南

D.1.10 inline 函数

6.7.4 函数说明符

添加了 C99 函数说明符 inlineinline 对于具有内部和外部链接的函数可发挥全部功能。现在即可按照 1999 C ISO 标准的规定来使用内联函数定义和外部内联函数。

内联函数定义是使用关键字 inline 定义的函数,不包含关键字 static 或 extern,并且显示在源文件(或包含文件)中的所有原型也包含关键字 inline,而不包含关键字 static 或 extern。

内联函数定义没有为该函数提供外部定义。在包含内联函数的源文件中显示的任何函数调用将符合以下条件:在调用点对函数定义进行内联或引用外部定义的函数。

只有在进行优化时,并且只有在编译器优化器认识这样做有益时,编译器才会对内联定义的调用进行内联。否则将调用外部函数。因此,包含内联定义的任何程序应与包含 extern 函数定义的目标文件链接在一起。

同时将关键字 extern 及内联与函数定义一起使用(或在继续函数定义的文件中的任何原型上使用)将导致在该目标文件中定义外部函数。要兼容与包含多个 extern 内联函数定义的对象相链接的 C++,链接程序只能选择其中一种函数来满足任何外部引用。

要获得符合标准的行为,必须使用当前编译器对旧代码重新进行编译。但是,如果您在旧的 C 和 C++ 二进制文件(C/C++ 5.6 之前)中使用了 extern 内联函数定义的实例,并且希望在不更改旧二进制文件行为的情况下将这些二进制文件与新的 C 和 C++ 二进制文件相链接,请指定 -features=no%extinl