tm中使用的值1900是否定义为符号?
Is the value 1900 used in tm defined as a symbol?
在 中,我正在像这样初始化一个 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};
我必须在本地定义它还是在标准中定义这样的东西?
C99 标准没有定义这样的常量,它为 C 和 C++ 指定了 tm
。
我不能说它是否在任何地方定义。
答案是没有标准中没有定义值...至少没有public唯一可用的值。
在 this implementation of mktime
中 TM_YEAR_BASE
定义为 1900,这是文件中唯一出现的 1900,尽管 TM_YEAR_BASE
继续使用了 6 次。
在 Visual Studio 我搜索了 time.h 它包括(crtdefs.h 和 time.inl)1900 仅在评论中。
我认为这项研究意味着以下之一:
- 1900 未在标准public中定义
- 1900 是 public 定义的,但未被修改
tm
的代码使用
- 1900 public仅在标准的某些实现中定义,但并非全部
这些选项中的任何一个都意味着即使可以找到针对 1900 的 public 定义,它也不能跨平台使用。
作为 OP,我会说我的决定是在内部定义 TM_YEAR_BASE
并使用它。
在 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};
我必须在本地定义它还是在标准中定义这样的东西?
C99 标准没有定义这样的常量,它为 C 和 C++ 指定了 tm
。
我不能说它是否在任何地方定义。
答案是没有标准中没有定义值...至少没有public唯一可用的值。
在 this implementation of mktime
中 TM_YEAR_BASE
定义为 1900,这是文件中唯一出现的 1900,尽管 TM_YEAR_BASE
继续使用了 6 次。
在 Visual Studio 我搜索了 time.h 它包括(crtdefs.h 和 time.inl)1900 仅在评论中。
我认为这项研究意味着以下之一:
- 1900 未在标准public中定义
- 1900 是 public 定义的,但未被修改
tm
的代码使用
- 1900 public仅在标准的某些实现中定义,但并非全部
这些选项中的任何一个都意味着即使可以找到针对 1900 的 public 定义,它也不能跨平台使用。
作为 OP,我会说我的决定是在内部定义 TM_YEAR_BASE
并使用它。