Re: Function Signatures In time.h



August Karlstrom wrote:
Does anyone know why some of the functions in time.h use pointers to constant objects of type time_t when time_t is an aritmetic type. Why is e.g. ctime declared as

char* ctime(const time_t* tp);

and not as

char* ctime(time_t t);

My guess is that this is an implementation decision related to the environment where C has its roots. In the Seventh Edition Unix (and probably also in earlier versions), time_t is implemented as a long
<http://minnie.tuhs.org/UnixTree/V7/usr/include/sys/types.h.html>. On a PDP-11 where that 1979 version of Unix run, passing as an argument a 16 bit pointer to a 32 bit long was probably more efficient than passing the actual 32 bit value.

--
Diomidis Spinellis
Code Quality: The Open Source Perspective (Addison-Wesley 2006)
http://www.spinellis.gr/codequality?clc
.