c++ - 如何在全局范围内初始化结构/类

标签 c++ c struct initialization

我现在知道如何在全局范围内初始化结构。

以下是示例代码:

#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/

相关文章:

c - 将结构添加到列表并获得正确的输出

c++ - 在 Arduinos 上,函数内的变量是否始终保留在 RAM 中?

c - "*** stack smashing detected ***"带文件读写

c - 如何修复 C 中的地址边界错误?

c - C 文件如何包含在 freeSwitch(一种调用框架)中?

c - 使用结构,无法让它在代码中打印房屋数量

java - 使用 long 将指针从 JNI 传递到 Java

c++ - 如何将一维数组更改为二维 vector ?

c++ - 如果有一个在数组中查找重复项并显示它 C++

c++ - 使用 Boost.Python 和静态库构建