输入deff指针是个好主意吗?

输入deff指针是个好主意吗?

我查看了一些代码并发现惯例是将指针类型转换为

SomeStruct*

typedef SomeStruct* pSomeStruct;

这有什么好处吗?


慕田峪4524236
浏览 537回答 4
4回答

慕盖茨4494581

当指针本身可以被视为“黑盒子”时,这是适当的,即,其内部表示应该与代码无关的一段数据。本质上,如果您的代码永远不会取消引用指针,并且您只是将其传递给API函数(有时通过引用),那么不仅typedef减少了*代码中的s 数量,而且还向程序员建议指针不应该真的被插手了。如果需要,这也可以在将来更容易地更改API。例如,如果您更改为使用ID而不是指针(反之亦然),现有代码将不会中断,因为指针永远不应该首先被取消引用。

回首忆惘然

不是我的经验。隐藏' *'会使代码难以阅读。

陪伴而非守候

我在typedef中使用指针的唯一一次是处理指向函数的指针时:typedef void (*SigCatcher)(int);SigCatcher old = signal(SIGINT, SIG_IGN);否则,我发现它们比有用更令人困惑。被删除的声明是指向signal()函数的指针的正确类型,而不是信号捕获器的指针。SigCatcher通过编写可以使其更清晰(使用上面更正的类型): typedef SigCatcher (*SignalFunction)(int, SigCatcher);或者,声明signal()函数: extern SigCatcher signal(int, SigCatcher);也就是说,a SignalFunction是一个指向函数的指针,该函数接受两个参数(a int和a SigCatcher)并返回a SigCatcher。而signal()本身是有两个参数(一个函数int和一个SigCatcher)并返回SigCatcher。

慕哥6287543

这可以帮助您避免一些错误。例如,在以下代码中:int* pointer1, pointer2;pointer2不是int *,它是简单的int。但是对于typedef,这不会发生:typedef int* pInt;pInt pointer1, pointer2;他们现在都是int *。
打开App,查看更多内容
随时随地看视频慕课网APP