【发布时间】:2013-03-03 03:33:57
【问题描述】:
我对提供给函数更改值的参数有疑问:
scene->shader->start( scene->shader->dataStart );
printf("%d\n",(int)scene->shader->dataStart);
然后,在scene->shader->start里面,我打印出来:
printf("%d\n",(int) _data );
它输出我调用scene->shader->start的内存地址,然后在所述函数内输出0。这与我通过结构内部的指针调用函数有关吗?这绝对没有意义,因为函数中的 printf() 是该函数的第一行,所以我绝对不会在任何地方将其设置为 0!非常感谢您的帮助,Erkling。
编辑:
void shader1_setdown(void *);
typedef struct {
GLuint shaderProgram;
void *dataStart;
void *dataEnd;
void (*start)(void *data);
void (*end)(void *data);
} renderShader;
“场景”结构中有一个 renderShader*。
【问题讨论】:
-
你能展示一些函数签名和变量声明吗?
-
是的,一秒钟。我将编辑我的帖子。
-
scene->shader->dataStart 声明在栈上吗?
-
如果要打印指针,使用
%p比使用%d和强制转换要好。 -
我刚刚发现在设置场景->着色器->开始和场景->着色器->结束的函数中,我混淆了这两个函数,这导致了错误。感谢大家尽自己所能提供帮助。
标签: c parameters arguments