[英]Why is C struct tm not as typedef?
我只是出于好奇而想知道为什么在C时间结构中
struct tm
用作此命令,不用于typedef
。 这样,我总是需要编写struct tm
来获得正确的代码。 许多结构都是“ typedef”的,为什么不这样呢?
因为当语言为struct标记使用单独的命名空间时,用不必要的typedef
污染通用命名空间是不礼貌的。 如果您真的希望typedef
隐藏它是struct
的事实,那么您可以轻松地自己提供一个,而不必强加给我们其他人。
许多结构都是“ typedef”的,为什么不这样呢?
我不知道你为什么这么说; C库中没有类型定义的结构。 FILE
是typedef,但不一定是结构。
也许您的意思是其他代码主体很多。 这是因为某些人(如您自己)出于某种原因认为名称空间污染是个好主意。 C库作者没有。
我认为问题是在C中这种结构就是这样诞生的!
您可以自由创建声明tm typedef的包含文件,也可以在代码中声明它!
typedef struct tm tm;
或更好(我认为)
typedef struct tm tm_t;
因为C ++与C不同。C++不是C的超集,而只是语言规范。
您可以使用写在代码顶部的#define
行来帮助您更快地编写。
#define TM struct tm
然后,代替struct tm
编写TM
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.