Sun Studio 12:C 用户指南

2.8.10 init

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

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

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