我试图理解这个函数并将其转换为 ctypes:
15 XDisplay* GetXDisplay() {
16 static XDisplay* display = NULL;
17 if (!display)
18 display = OpenNewXDisplay();
19 return display;
20 }
我们在这里看到if(!display)
然后做display = OpenNewXDisplay();
但令我困惑的是那个人在上面的行中定义了 display
是 NULL
( static XDisplay* display = NULL;
) 那么,如果他只是将其设置为空,那么到底为什么需要 if 呢? display 是一个全局变量吗?
最佳答案
display 是一个静态变量。
对于静态变量,初始化仅发生一次,而不是每次进入函数时都会发生。这只是基本的 C(也是基本的 C++,或基本的 Objective-C)。
所以这段代码只是创建单例对象的原始方法。
关于c - 这是全局的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27602246/