[PATCH]: libev-3.8; ev++.h bug and warning fixes.
Konstantin Lepa
konstantin.lepa at gmail.com
Fri Aug 28 12:33:00 CEST 2009
On Aug 28, 2009, at 12:42 PM, Marc Lehmann wrote:
> On Fri, Aug 28, 2009 at 12:11:39PM +0400, Konstantin Lepa <konstantin.lepa at gmail.com
> > wrote:
>> 1. Fixed warnings for compilation with -pedantic flag.
>
> ev++.h is written in C++, not in any other language. If you compile
> ev++.h
> with any othe rlanguage, that's your problem and doesn't make ev++.h
> unusable as you claim.
>
I use C++ only (freebsd 7.2). I'd prefer to compile my source code
with -pedantic and -Wextra
flag. But when i'm using ev++.h, then g++ throws warnings for unused
function parameters and the error for a comma after a last enum element.
It annoys and disturbs me to find real problems.
[14:18] bsdman:build {164} uname -a
FreeBSD bsdman.virtualworld.com 7.2-RELEASE FreeBSD 7.2-RELEASE #0:
Fri May 1 08:49:13 UTC 2009 root at walker.cse.buffalo.edu:/usr/obj/
usr/src/sys/GENERIC i386
[14:18] bsdman:build {165} g++ --version
g++ (GCC) 4.2.1 20070719 [FreeBSD]
Enum problem:
/usr/local/include/ev++.h:79: error: comma at end of enumerator list
>> 2. Fixed errors in template member functions.
>
> - static void method_thunk (EV_P_ ev_watcher *w, int revents)
> + static void method_thunk (struct ev_loop *, ev_watcher *w, int
> revents)
>
> sorry, your patch is completely bogus. you need to explain why
> warnings
> make ev++.h unusable, or why your compiler doesn't support macro
> expansion.
>
Warnings generated by -Wextra:
--g++ output--
/usr/local/include/ev++.h: At global scope:
/usr/local/include/ev++.h:481: warning: unused parameter 'loop'
/usr/local/include/ev++.h:481: warning: unused parameter 'revents'
--end output--
C++ permits to declare function without parameter names for disabling
the warning. For example:
int Example(int a, int /*unused*/) {
std::cout << a << std::endl;
}
EV_P_ is "struct ev_loop *loop,". And it generates warning of unused
loop variable.
My code "cleanupTimer_.set<IOEventManager,
&IOEventManager::Cleanup>(this);" generated next error:
--g++ output--
/usr/local/include/ev++.h: In static member function 'static void
ev::base<ev_watcher, watcher>::method_noargs_thunk(ev_loop*,
ev_watcher*, int) [with K = mimic::IOEventManager, void (K::* method)
() = &mimic::IOEventManager::Cleanup, ev_watcher = ev_timer, watcher =
ev::timer]':
/usr/local/include/ev++.h:477: instantiated from 'void
ev::base<ev_watcher, watcher>::set(K*) [with K =
mimic::IOEventManager, void (K::* method)() =
&mimic::IOEventManager::Cleanup, ev_watcher = ev_timer, watcher =
ev::timer]'
/home/badgopher/work/mimic/src/mimic/herz/io-event-manager.cpp:17:
instantiated from here
/usr/local/include/ev++.h:483: error: must use '.*' or '->*' to call
pointer-to-member function in '&mimic::IOEventManager::Cleanup (...)'
---end output--
Prototype of IOEventManager::Cleanup is "void
(*IOEventManager::Cleanup)()";
P.S. Sorry for my bad english.
More information about the libev
mailing list