[ping2][PATCH v2][BZ #12515] Improve precision of clock function

Rich Felker dalias@aerifal.cx
Tue Jun 11 15:11:00 GMT 2013


On Mon, Jun 10, 2013 at 11:00:16PM -0700, Paul Eggert wrote:
> On 06/10/2013 06:40 PM, Rich Felker wrote:
> > First, to make the code work as-is
> > with the wrapping behavior, the values should just be converted to the
> > appropriate unsigned types so that the wrapping is well-defined, then
> > converted, either via a cast or implicitly, back to the right type.
> 
> That's more work and harder to understand and more
> error-prone than the pragma.  For one thing, there's

I disagree. Having to be aware of an obscure GCC feature, which many
readers would have to look up in the manual to understand, is a lot
less understandable than unsigned arithmetic (which anybody who knows
C should know).

> no simple way to determine the "appropriate
> unsigned type".  And why bother?  The code is designed
> to be compiled by GCC, so the pragma should suffice.

There are only two cases, either it's unsigned long or unsigned long
long. Which to use depends on the size of time_t.

> > This conversion takes place in an implementation-defined way
> 
> Which is another reason to prefer the pragma.

Except that the latter is the same for all implementations.

Rich



More information about the Libc-alpha mailing list