我现在知道如何在全局范围内初始化结构。
以下是示例代码:
#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
我不知道为什么会这样。我想知道如何将复杂参数传递给某个回调函数?
非常感谢
最佳答案
And I am on Ubuntu 11.10, when I compile this program, I get the following errors: error: ‘a’ does not name a type
编译器通过这条消息告诉您,对结构成员的赋值不能发生在全局范围内。如果你想初始化a
要么写
struct A a = {6};
或者使用更新的语法
struct A a = {.x = 6};
或者在程序启动后尽早进行初始化分配(即在 main 的开头)。
更新/编辑:
顺便说一句:这与 GLUT 或任何其他 header 无关。这是语言规范的事情。
更新/编辑 2
I am wondering how to pass a complex parameter to some callback function?
嗯,在 GLUT 回调的情况下,这会很困难,因为 GLUT 不允许您指定用户定义的回调数据。您可以使用 ffcall 库创建原位 闭包,然后将其传递给 GLUT。但有以下几点需要考虑:一旦遇到这堵墙,就该放弃 GLUT 了。 GLUT 不是 OpenGL 开发的必要条件,也绝不是复杂应用程序的基础。所以那就不要使用它。
关于c++ - 如何在全局范围内初始化结构/类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529682/