d改进更好C静态构造器
原文
pragma(crt_constructor)应改进为:
1.设置默认extern"C"
2.允许修改不变变量.
crt_destructor同样,因为可修改可变变量,该构造器还应标记为@system.
链接
重复一遍:
1,crt_constructors可修改不变.
2,因为1,标记crt_constructors为系统.
3,因为C运行时,使crt_constructors/crt_destructors为C链接.
extern(C),易冲突.
常用技巧:
alias SigHandlerT = extern(C) void function (int sig) nothrow;
//确保混杂名,避免冲突
private SigHandlerT getSignalHandler () @safe pure nothrow @nogc
{
extern(C) void signalHandler (int signal) nothrow
{ }
return &signalHandler;
}
浙公网安备 33010602011771号