现在我知道如何初始化在全球范围内的结构。
以下是一个示例代码:
#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
我不知道为什么这可能发生。 我想知道如何将复杂的参数传递给一些回调函数?
非常感谢
现在我知道如何初始化在全球范围内的结构。
以下是一个示例代码:
#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,当我编译这个程序,我得到了以下错误:错误:“一个”不姓类型
编译器会告诉你这个消息,这对分配结构成员可以在全球范围内不会发生。 如果你想初始化a
要么写
struct A a = {6};
或使用较新的语法
struct A a = {.x = 6};
或者做节目的开始(即在主开始)后早期的初始化分配。
BTW:这有什么好做GLUT或任何其他头。 这是语言规范的事情。
我想知道如何将复杂的参数传递给一些回调函数?
那么,在GLUT的情况下,回调这将是困难的,因为GLUT不允许您指定用户定义的回调数据。 您可以使用ffcall库创建现场封锁随后传递到过剩。 但是有考虑以下情况:只要你打这堵墙,是时候抛弃过剩。 GLUT不是OpenGL开发的要求和根本配不上为复杂应用程序的基础。 因此,只要不使用它呢。
你在任何函数之外做的任务。 你的情况,你可以移动的,只有一行代码得到执行以下操作:
#include<GL/glut.h>
struct A
{
int x;
};
struct A a;
int main()
{
a.x=6;
}
你正在观察的问题是不相关的,包括过剩。 编译器不会让你在全球范围内的值赋给一个结构。 您可以通过调用结构或通过调用某些函数赋值(这将在全球范围内被允许)的构造实现你想要什么任。
编辑:这是一个有点相关的讨论: 为什么我不能访问我的数组下标在全球范围内