gpt4 book ai didi

Iphone Objective-c 全局变量不同的值

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:22 24 4
gpt4 key购买 nike

我有一个这样的 C 头文件:

#ifndef RENDERER_H
#define RENDERER_H
static int g_count = 0;
static inline void g_addVertex(...) {
...
g_count++;
}
static inline void g_flush() {
...
g_count = 0;
}
#endif

我有一个像这样的 Objective-C 类:

...
#include "Renderer.h"

@implementation Sprite
...
-(void)draw:(float)dt {
...
g_addVertex(...); //6 times
}

在 ES1Renderer.m 的 iOS OpenGL 模板中,我创建了一个 Sprite 实例。在ES1Renderer中的渲染方法中我调用了这个实例的draw方法,g_count变量在draw方法中正常计数。(在draw调用了6次g_addVertex(...)函数后它的值为6)

但是我在ES1Renderer的render方法中调用了g_flush()函数之后,就在调用了Sprite实例的draw方法之后,在g_flush()中g_count变量的值为0。例如Sprite类的draw方法中的6个g_addVertex()后的6个。

请帮助我,我不知道为什么 g_count 变为 0,没有其他函数或它们之间的其他东西我可以更改它的值。

最佳答案

静态变量显然不是全局的。静态变量具有文件作用域内部链接,因此包含 header 的每个文件都将获得自己的g_count。如果你想要一个全局变量,只需在一个实现文件中写入 int g_count 并将 extern int g_count 放在其他使用该全局变量的文件将导入的 header 中。

关于Iphone Objective-c 全局变量不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com