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
_______________________________________________
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