> Date: Wed, 16 Jan 2013 10:14:19 -0800
> From: "Thomas D. Dean" <tomd...@speakeasy.org>
> Subject: Re: time_t definition
>
> On 01/16/13 03:00, Patrick Lamaiziere wrote:
>
> > Looks like gcc47 checks the printf format string (-Wformat)
> > Disable this check or convert your time_t.
>
> Yes, I know gcc47 checks the format string.
>
> But, time_t is of type int32, from a typedef statement.

*precisely*  and the format string had "%ld".
this IS a type mismatch, if a 'long' is a 64-bit value.

> #include <stdio.h>
> typedef int zzz;
> typedef zzz yyy;
> typedef yyy xxx;
> int main() {
>    xxx idx;
>    for (idx=0; idx<10; idx++) printf("%d\n",idx);
>    return 0;
> }
>
> does not produce the error (I did this on the 'other' system)
>  > gcc --version
> gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
> ...
>
>  > gcc -O2 -pipe  -I../../include -std=gnu99 -fstack-protector 
> -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized 
> -Wno-pointer-sign xxx.c -o xxx
>
> I did not think to do this on the FreeBSD system I was using yesterday.
>
> What I don't understand is where gcc is losing track of this definition.

It *isn't*.   <grin>
>
> In 9.0, or maybe earlier, the definition of time_t was changed with a 
> view toward 64-bit systems.  I remember a statement to the effect of "in 
> 2038, 32-bit time will overflow.  It is unlikely that many 32-biot 
> systems will be around then.  So, making the change to 64-bit now will 
> prevent having to do it in the future".
>
> So, now, it seems that any calculation involving time_t requires a cast????

FALSE.  Calculation is OK.  I/O format conversion is problematic.








_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to