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
Re: Compiler warnings in psqloodbc 08.03.0200 |
Список | 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 по дате отправления: