#pragma fini(仅限 C)

适用的调用

表 1. 接受给定编译指示的调用
编译指示 (pragma) xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
#pragma fini      
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

对象代码控制

用途

指定在 main() 完成后或在调用 exit() 后,运行时库调用函数列表的顺序。

对于共享库,将在从内存装入共享库时调用 fini 函数。 例如,使用动态装入时,会在调用 dlclose () 时发生此情况。

语法

读取语法图跳过可视语法图#pragmafini( ,功能名称 )

使用量

在编译指示中指定的任何函数都应该具有返回类型 void (例如, void fA();) ,并且不采用任何参数。 接受具有非空返回类型的函数,但会废弃返回值。

由于参数将包含垃圾值,因此将忽略采用参数的函数并发出警告。

在同一编译单元中,将按指定的顺序调用 pragma fini 中的函数列表。 类似地,在同一个编译单元中,以在源中迂到编译指示的顺序调用在多个 pragma fini 中指定的函数。

通常,跨文件和跨库的静态终止顺序是非标准的,因此是不可移植的行为。 建议不要构建对此行为的任何依赖关系。 未定义跨文件的函数顺序,即使在使用 -Wm 选项时也是如此。

当混合 C 和 C++ 文件时,未定义 C 文件中的 init 或 fini 函数相对于 C++ 文件中的静态构造函数/析构函数的相对顺序。 -qunique 选项可以与 pragma fini进行交互。

注: 必须在链接时使用 C++ 调用,例如 xlC 或可再分发的工具 linkxlCmakeC++SharedLib

相关信息