为什么C struct tm不是typedef?

时间:2015-04-12 10:15:08

标签: c struct typedef

我只是出于好奇而想知道,为什么是C时间结构

struct tm

用作此而不是typedef。这样我总是需要编写struct tm来获得正确的代码。很多结构都是" typedefed",为什么不是这个呢?

4 个答案:

答案 0 :(得分:5)

因为当语言具有单独的struct标记命名空间时,用一个不必要的typedef污染一般命名空间是相当粗鲁的。如果你真的希望typedef隐藏它是struct的事实,你可以轻松地自己提供一个而不强迫我们其他人。

  

很多结构都是" typedefed",为什么不是这个呢?

我不知道你为什么这么说; C库中没有typedefed结构。 FILE是一个typedef,但不一定是struct。

也许你的意思是其他代码体中有很多东西。这是因为有些人和你一样认为命名空间污染是出于某种原因的好主意。 C库的作者不是。

答案 1 :(得分:1)

我认为事情就是在C中这种结构就是这样诞生的!

您可以自由创建声明tm typedef的包含文件,或在代码中声明它!

typedef struct tm tm;

或更好(在我看来)

typedef struct tm tm_t;

答案 2 :(得分:0)

因为C ++与C不同.C ++不是C的超集,它只是语言规范。

答案 3 :(得分:0)

您可以使用代码顶部写的#define行来帮助您更快地编写代码。

#define TM struct tm

然后,而不是struct tmTM