gpt4 book ai didi

c - 在头文件中定义 union 的语法

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

我一直在研究使用 c 来应用 OO 实践。基本上我到目前为止得到的大纲是这样的

每个对象都有自己的文件公共(public)函数和变量在对象的 .h 文件中定义私有(private)变量和函数位于 .c 文件中。

//HEADER

typedef struct channelobj * ChannelOBJ;

ChannelOBJ newChannelOBJ();

void setVolume(ChannelOBJ,float);
void setMute(ChannelOBJ,int);
void setNumberOfInputs(ChannelOBJ,int);



//SOURCE
struct channelobj {
//int privateint;
//char *privateString;

float volume=1;
int mute=0;
int numberOfInputs=0;
short int *leftoutput;
short int *rightoutput;

};


ChannelOBJ newChannelOBJ(){
ChannelOBJ channel=(ChannelOBJ)malloc(sizeof(struct channelobj));
bzero(channel, sizeof(struct channelobj));
return channel;
}

到目前为止,我非常喜欢这种方法。在我的示例代码中,我展示了在我的头文件中定义一个名为 channelobj 的结构。我不确定在头文件中类似定义 union 的正确语法。

我在源文件中的 union 看起来像这样。

typedef union {
struct {
SInt16 high;
SInt16 low;
} parts;
UInt32 word;
} IntConverter;

我如何在头文件中定义它?

最佳答案

您可以像处理 struct 一样处理它,方法是给它命名并使用 typedef 的指针:

typedef union intconverter *IntConverter;

ChannelOBJIntConverter 等事物的传统术语是不透明句柄。不透明句柄不完全是面向对象的(因为您不会有继承、虚函数等),但它们是将接口(interface)与实现分离(即提供封装)的好方法。

关于c - 在头文件中定义 union 的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6281560/

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