在this answer我正在初始化tm
,如下所示:
tm a{0, 0, 0, 15, 5, 2006 - 1900};
使用裸号有点不清楚,但我发现它不太清楚:
tm a{0, 0, 0, 15, 5, 106};
我想要的是,如果我可以使用标准中定义为1900
的符号,因为最容易理解的是:
tm a{0, 0, 0, 15, 5, 2006 - TM_YEAR_ORIGIN};
我是否必须在本地定义或在标准中定义?
答案 0 :(得分:0)
C99标准没有定义这样的常量,它为C和C ++指定tm
。
我不能说它是否在任何地方定义。
答案 1 :(得分:0)
答案是否标准中没有定义的值...至少没有公开可用的值。
在this implementation of mktime
TM_YEAR_BASE
中定义为1900,这是文件中唯一出现的1900,但TM_YEAR_BASE
继续使用6次。
在Visual Studio上我搜索了time.h,它包括(crtdefs.h和time.inl)1900只在评论中。
我认为这项研究意味着以下其中一项:
tm
这些选项中的任何一个都意味着即使可以找到1900的公共定义,也无法跨平台使用它。
作为OP,我会说我的决定是在内部定义TM_YEAR_BASE
并使用它。