Re: Compiler warnings in psqloodbc 08.03.0200

Поиск
Список
Период
Сортировка
От Hiroshi Inoue
Тема Re: Compiler warnings in psqloodbc 08.03.0200
Дата
Msg-id 48E39EE8.1050906@tpf.co.jp
обсуждение исходный текст
Ответ на Re: Compiler warnings in psqloodbc 08.03.0200  (Zoltan Boszormenyi <zb@cybertec.at>)
Ответы Re: Compiler warnings in psqloodbc 08.03.0200  (Zoltan Boszormenyi <zb@cybertec.at>)
Re: Compiler warnings in psqloodbc 08.03.0200  (Zoltan Boszormenyi <zb@cybertec.at>)
Список pgsql-odbc
Zoltan Boszormenyi wrote:
> Hiroshi Inoue írta:
>> Zoltan Boszormenyi wrote:
>>> Hi,
>>>
>>> here's the fix for all non-pointer-signedness warnings,
>>> against 08.03.0300 that was released meanwhile. Now
>>> the compilation only emits 246 "differ in signedness"
>>> warnings, which is still too much noise. I agree with
>>> Tom Lane that those should be cleaned up if for nothing
>>> else, than the real bugs don't get lost in the noise.

I forgot to mention that I don't think it's very nice
to remove all the warnings.

>> Thanks.
>>
>>> In pgapi30.c, two instances of
>>> "cast from pointer to integer of different size"
>> They may come from the strange handling of unixODBC's
>> 64bit ODBC. Honestly I don't understand how to use
>> 64-bit unixODBC correctly. Probably you can remove the
>>  warnings by #defining BUILD_REAL_64_BIT_MODE somewhere.
>
> I'll try it but the CAST_PTR() seems to be working
> in both 32 and 64-bit.

Because I've implemeted the driver with the assmption
sizeof(SQLLEN) == sizeof(POINTER), I don't think the
warnings should be removed in such a way.

 > BUILD_REAL_64_BIT_MODE
> should be defined by the autoconf machinery if needed.

As I already mentioned, I don't understand 64-bit unixODBC.
Maybe you have to use 64-bit unixODBC carefully.

>>> In psqlodbc.c()::finalize_global_cs() is only used inside
>>> "#ifdef WIN32" but was defined outside causing a
>>> "defined but not used" warning.
>> It is also used in _fini() when __GNUC__ isn't defined.
>> Though I'm not familiar with *nix systems, it seems
>> strange to me that there's no function with
>> __attribute__((destructor)) while init() function
>> with __attribute__((constrcutor)) is used under
>>  __GNUC__ mode.
>
> So, because of boolean logic:
> A v (!A ^ !B) = A v !B
> something like below would work:
>
> #if defined(WIN32) || !defined(__GNUC__)
> ...
> #endif
>
> around finalize_global_cs().

IMHO initialize and finalize functions should be
  cosidered as a pair and it seems appropriate to issue
warnings when the corresponding finalize function is
not used whereas the initialize function is used.

В списке pgsql-odbc по дате отправления:

Предыдущее
От: "Hiroshi Saito"
Дата:
Сообщение: Re: Compiler warnings in psqloodbc 08.03.0200
Следующее
От: Zoltan Boszormenyi
Дата:
Сообщение: Re: Compiler warnings in psqloodbc 08.03.0200