记录一种我第一次见的“局部变量”外部赋值方法

比如在libgo中的函数

Processer* & Processer::GetCurrentProcesser()
{
    static thread_local Processer *proc = nullptr;
    return proc;
}

然后给proc赋值可以用

struct Processer::Process(){
    GetCurrentProcesser() = this  
}

刚看到这段代码的时候我是懵圈的,我是第一次见这么写。但是细细分析就发现确实很巧妙。

众所周知,static修饰的常量是保存在静态区中的,是不参与堆栈回收之类的事情的,也就是说它是持久存在的,所以不必担心变量赋值给空指针,然后它提供了一种不在类内声明的变量方式,与类解耦

posted @ 2023-02-08 16:06  heisse  阅读(4)  评论(0编辑  收藏  举报