gpt4 book ai didi

c - 声明为两种类型的 Typedef 结构 : "typedef struct x { .. } X, *XPointer"

转载 作者:太空狗 更新时间:2023-10-29 16:46:00 25 4
gpt4 key购买 nike

很抱歉,如果之前有人问过这个问题,我什至不确定要搜索什么才能提出这个问题。

当我创建一个 typedef struct 时,我通常会这样做:

typedef struct myStruct {
int a;
int b;
struct myStruct *next;
} MyStruct;

所以我在最后用MyStruct声明它。然后当我创建将其作为参数传入的函数时,我写

int doSomething(MyStruct *ptr){

}

然而我正在与一位 friend 合作进行一个项目并且我遇到了他的编码风格,即像这样声明*MyStructP:

typedef struct myStruct {
int a;
int b;
struct myStruct *next;
} MyStructR, *MyStructP;

然后他在他的函数中使用了MyStructP,所以他的参数看起来像:

int doSomething(MyStructP)

所以他不必在参数列表中使用*。这让我感到困惑,因为当我查看参数列表时,我总是寻找 * 来确定 arg 是否是指针。最重要的是,我正在创建一个函数,该函数接受我创建的结构和他创建的结构,因此我的 arg 有 * 而他没有。 super 困惑!!

有人可以就两者之间的差异提供见解/比较/建议吗?优点?缺点?哪种方式更好或更差,或更广泛使用?任何信息。谢谢!

最佳答案

将指针隐藏在 typedef 后面通常被认为是糟糕的风格,除非它们是不透明的句柄(例如 SDL_GLContextvoid*)。
这不是这里的情况,我同意你的看法,这比帮助更令人困惑。

关于c - 声明为两种类型的 Typedef 结构 : "typedef struct x { .. } X, *XPointer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677318/

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