为什么std :: time具有不必要的参数? [重复]

问题描述 投票:5回答:1
来自cppref

std::time_t time(std::time_t* arg);

返回编码为std::time_t对象的当前日历时间,并将其存储在该对象中除非arg是空指针,否则由arg指向。

我从未见过有人用非空指针参数调用std::time。我只是想知道:

1。为什么std::time有不必要的参数?

2。设计背后是否有动机/理由?

c++ c time posix design
1个回答
4
投票
从历史上讲,time_t是一种抽象类型,可能有人期望它可能是一种结构或扩展类型,可能无法可靠地返回,或者在ABI中编译器可能不同意返回它,使得通过将其存储到呼叫者提供的地址“有意义”来返回它。注意difftime接口的存在,以及C对time_t值的解释方式含糊不清。只有POSIX(很久以后)才要求单位为秒(自纪元开始,并定义了纪元)。我不确定是否有任何具体证据证明其动机(也许在C89基本原理文档中?),但这是我要研究的领域。

对于C ++,仅是std::time接口是C time函数,包装在std::中。

© www.soinside.com 2019 - 2024. All rights reserved.