我在不同的帖子中读到,通过执行以下操作可以在 C 中隐藏结构的实现:
测试.h:
typedef struct SomeTest *SomeTest;
SomeTest make();
测试.c:
#include "test.h"
typedef struct SomeTest {
int data;
}*SomeTest;
不过我想知道的是: 是行:
typedef struct SomeTest *SomeTest;
真的需要那样吗?是否足以:
测试.h:
typedef struct SomeTest SomeTest;
SomeTest *make();
测试.c:
#include "test.h"
struct SomeTest {
int data;
};
就是那一行:
typedef struct SomeTest *SomeTest;
有时让我头疼,...它隐藏了“SomeTest”是一个指针的事实...
最佳答案
这只是编码风格的问题。当指针隐藏在 typedef
后面时,包括我在内的很多人都感到很困惑。在每次出现时添加小的 *
并不是什么大问题,但对于偶尔阅读的人来说,有助于澄清事情。
typedef
的另一个方面真的很糟糕:对事物使用相同的标识符(struct
标记和 typedef
ed 名称)不同类型的(一个是 struct
,另一个是指针)不应该被允许并且真的很困惑。这真的很糟糕,很糟糕的风格,永远不应该通过任何代码审查。
关于C - 隐藏结构的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38587636/