On Fri, Mar 30, 2018 at 10:47:09PM +0800, Tonghao Zhang wrote: > I rebuild it on ubuntu 17.10 and cash it. I use the 'RTE_SET_USED' to fix it. > > > diff --git a/lib/librte_vhost/fd_man.c b/lib/librte_vhost/fd_man.c > index 771675718..f11803191 100644 > --- a/lib/librte_vhost/fd_man.c > +++ b/lib/librte_vhost/fd_man.c > @@ -279,7 +279,8 @@ fdset_pipe_read_cb(int readfd, void *dat __rte_unused, > int *remove __rte_unused) > { > char charbuf[16]; > - read(readfd, charbuf, sizeof(charbuf)); > + int r = read(readfd, charbuf, sizeof(charbuf)); > + RTE_SET_USED(r); > } > > void > @@ -319,5 +320,6 @@ fdset_pipe_init(struct fdset *fdset) > void > fdset_pipe_notify(struct fdset *fdset) > { > - write(fdset->u.writefd, "1", 1); > + int r = write(fdset->u.writefd, "1", 1); > + RTE_SET_USED(r); > } >
A better option might be to use _Pragma Something like this perhaps #define ALLOW_UNUSED(x) \ _Pragma(push) \ _Pragma(diagnostic ignored "-Wunused-result") \ #x;\ _Pragma(pop) This is of course untested, so it probably needs some tweaking, but this method avoids the need to declare an additional stack variable, which i don't think can be eliminated due to the cast. I believe that this method should also work accross compilers (the gcc and clang compilers support this, and i think the intel compiler should as well) Neil