Re: cast pid_t to int when using *printf
От | Oliver Jowett |
---|---|
Тема | Re: cast pid_t to int when using *printf |
Дата | |
Msg-id | 4153F79F.2080609@opencloud.com обсуждение исходный текст |
Ответ на | Re: cast pid_t to int when using *printf (Peter Eisentraut <peter_e@gmx.net>) |
Ответы |
Re: cast pid_t to int when using *printf
Re: cast pid_t to int when using *printf |
Список | pgsql-patches |
Peter Eisentraut wrote: > Am Freitag, 24. September 2004 09:34 schrieb Oliver Jowett: > >>Neil Conway wrote: >> >>>On Fri, 2004-09-24 at 16:51, Oliver Jowett wrote: >>> >>>>gcc (3.2.3 on Solaris 9) warns about a couple of places where a pid_t is >>>>formatted with %d by a printf-family function. >>> >>>For curiosity's sake, what formatting escape does gcc prefer? >> >>I don't think there is an escape for pid_t, you always have to cast it. > > > I think what he was asking is this: Since pid_t has to be a signed integer > type, but gcc does not accept %d for it, then it could be that pid_t is wider > than an int, so casting it to int would potentially lose information. pid_t on the Solaris/sparc system is a long (but both int and long are 32 bits). Some experimentation shows that gcc is happy with a %ld format specifier. But compiling the same code on a Linux/x86 system makes gcc complain when applying %ld to pid_t, so we will need a cast there either way. I notice that elog.c casts MyProcPid to long and uses %ld. Amusingly, MyProcPid is explicitly an int.. -O
В списке pgsql-patches по дате отправления: