gpt4 book ai didi

c - 在 .m 文件中访问作为全局变量的结构

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:45 26 4
gpt4 key购买 nike

我有一个结构,其中包含指向值的指针,这些值必须在我的类(class)中的多个函数中使用。我在 header 中用 typedef 定义了类型,

typedef struct MyAUGraphPlayer {
AUGraph graph;
AudioUnit speechAU;
} MyAUGraphPlayer;

并在 .m 中声明它,

@implementation SpeechGraph {
MyAUGraphPlayer player;
}

然而,当尝试初始化它时,我从这段代码中得到错误“意外的表达式”(错误在 player = ... 行)

- (void)setup { 
player = { 0 };
CreateMyAUGraph(&player);
}

player 变量被识别为 MyAUGraph 类型,但执行常规的 { 0 } 赋值会导致编译时错误。

我已经在命令行项目中构建了这个 Core-Audio 代码,但现在我正在尝试围绕它构建一个 UI,显然 C 核心内容和面向对象的内容之间的一些混合给我带来了一些困惑.如果能提供一些帮助,我将不胜感激。

最佳答案

首先:player 不是全局变量。它是SpeechGraph的一个实例变量(ivar)。

其次:在现代 Objective-C 中,默认情况下,实例变量在新alloced 对象中被初始化为 0。无需再次将此值设置为 0。参见 Programming With Objective-C 、“使用对象”、“对象是动态创建的”。

第三:如果您确实需要设置值,player = (MyAUGraphPlayer) { 0 }; 应该可以。 (这是赋值,不是初始化。More about the difference.)

关于c - 在 .m 文件中访问作为全局变量的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34536081/

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