#pragma init(仅限于 C)
适用的调用
| 编译指示 (pragma) | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
#pragma init |
✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
用途
指定在调用 main() 之前运行时库调用函数列表的顺序。
对于共享库,将共享库装入到内存时将调用 init 函数。 例如,使用动态装入时,会在调用 dlopen () 时发生此情况。
语法
使用量
在编译指示中指定的任何函数都应该具有返回类型 void (例如, void
fA();) ,并且不采用任何参数。 接受具有非空返回类型的函数,但会废弃返回值。
由于参数将包含垃圾值,因此将忽略采用参数的函数并发出警告。
在同一编译单元中,将按指定的顺序调用 pragma init 中的函数列表。 同样,在同一编译单元中,将按照在源中迂到编译指示的顺序来调用在多个 pragma init 中指定的函数。
通常,跨文件和跨库的静态初始化顺序是非标准的,因此是不可移植的行为。 建议不要构建对此行为的任何依赖关系。 未定义跨文件的函数顺序,即使在使用 -Wm 选项时也是如此。
当混合 C 和 C++ 文件时,未定义 C 文件中的 init 函数相对于 C++ 文件中的静态构造函数/析构函数的相对顺序。 -qunique 选项可以与 pragma init进行交互。
注: 必须在链接时使用 C++ 调用,例如 xlC 或可再分发的工具 linkxlC 或 makeC++SharedLib 。
