gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:26 24 4
gpt4 key购买 nike

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

以下是示例代码:

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com