我现在知道如何在全局范围内初始化结构。
以下是示例代码:
#include<GL/glut.h>
struct A
{
int x;
};
struct A a;
a.x=6;
int main()
{}
我在 Ubuntu 11.10 上,当我编译这个程序时,出现以下错误:
error: ‘a’ does not name a type
我不知道为什么会发生这种情况。我想知道如何将复杂的参数传递给某些回调函数?
多谢
我在 Ubuntu 11.10 上,当我编译这个程序时,出现以下错误: error: ‘a’ does not name a type
编译器通过此消息告诉您,对结构成员的赋值不能在全局范围内发生。如果你想初始化a
要么写
struct A a = {6};
或使用更新的语法
struct A a = {.x = 6};
或者在程序启动后尽早进行初始化分配(即在 main 的开头)。
更新/编辑:
顺便说一句:这与 GLUT 或任何其他标头无关。这是语言规范的事情。
更新/编辑2
我想知道如何将复杂的参数传递给某些回调函数?
好吧,在 GLUT 回调的情况下,这会很困难,因为 GLUT 不允许您指定用户定义的回调数据。你可以使用ffcall就地创建库closures然后传递给 GLUT。但有以下几点需要考虑:一旦遇到困难,就该抛弃过剩了。 GLUT 不是 OpenGL 开发的要求,也从来不是复杂应用程序的基础。所以那就不要使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)