我正在尝试理解这个函数并将其转换为ctypes:
15 XDisplay* GetXDisplay() {
16 static XDisplay* display = NULL;
17 if (!display)
18 display = OpenNewXDisplay();
19 return display;
20 }
Run Code Online (Sandbox Code Playgroud)
我们在这里看到if(!display)然后做了display = OpenNewXDisplay();但是令我困惑的是那个人在它上面的行上定义的display是NULL(static XDisplay* display = NULL;)所以为什么在地球上需要if,如果他只是将它设置为null?以某种方式显示一个全局变量?
display是一个静态变量.
对于静态变量,初始化仅发生一次,而不是每次输入函数.这只是基本的C(也是基本的C++,或基本的Objective-C).
所以这段代码只是创建单例对象的一种原始方式.