time_t definition
    Thomas D. Dean 
    tomdean at speakeasy.org
       
    Wed Jan 16 18:14:12 UTC 2013
    
    
  
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.
#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.
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????
Tom Dean
    
    
More information about the freebsd-questions
mailing list