繁体   English   中英

为什么C struct tm不如typedef?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM