Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

2.11.12 init

#pragma init (f1[, f2…,fn])

使实现在调用 main() 之前调用函数 f1fn(初始化函数)。此类函数需要类型为 void 并且不接受参数。当程序在开始执行后构造程序的内存映像时,将调用此类函数。执行将共享对象送入内存的操作时(程序启动时,或执行某些动态装入操作时,例如 dlopen()),执行共享对象中的初始化函数。调用初始化函数的唯一顺序是链接编辑器处理它们的顺序,静态和动态均可。

如果初始化函数影响全局程序的状态,则应额外小心。例如,除非接口明确声明您使用系统库初始化函数时会发生什么情况,否则您应捕获和恢复所有全局状态信息,如系统库初始化函数可能更改的 errno 的值。

此类函数每出现在 #pragma init 指令中一次,就会被调用一次。