我只是出于好奇而想知道,为什么是C时间结构
struct tm
用作此而不是typedef
。这样我总是需要编写struct tm
来获得正确的代码。很多结构都是" typedefed",为什么不是这个呢?
答案 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 tm
写TM
。