【发布时间】:2020-08-09 10:15:33
【问题描述】:
来自cppref:
std::time_t time(std::time_t* arg);返回编码为
std::time_t对象的当前日历时间,并将其存储在对象中 由arg指向,除非arg是空指针。
我从未见过有人使用非空指针参数调用std::time。我只是想知道:
1.为什么std::time 有一个不必要的参数?
2。设计背后有什么动机/理由吗?
【问题讨论】:
-
真正的动机可能已经失去了......历史。
-
我对导致此的路径的猜测:从前可能有函数
void time(time_t*)。然后有人认为返回值会更方便,并且由于将 void 返回值更改为非 void 不会破坏 ABI,但删除参数会,我们最终得到了time_t time(time_t*)。我不知道是不是这样,也不知道为什么函数最初只使用指针进行输出。 -
请参阅this 重复的答案。
-
@eerorika 我不相信这是一个很好的副本。这个问题本身基本上是不相关的,其中一个答案恰好与这个问题的切线相吻合。
-
eerorika 的猜测大致正确,虽然历史遗物不是
void time(time_t*),因为在最初设计函数时,我们没有time_t,@ 987654334@, 或void一起玩。请参阅下面的my answer,复制自其他问题以解决 Joseph Sible 的反对意见。