Re: 'warning: unused parameter'

Václav Zeman <[email protected]>
Newsgroups gmane.comp.version-control.monotone.devel
Message-ID <CAKw7uVjf2aQ9Q591_bE1wNO5uUq_mSHPR7NcqRACDgN=Daxk_g@mail.gmail.com>
On 30 April 2014 11:05, Stephen Leake wrote:
>
> Stephen Leake <[email protected]> writes:
>
> > Stephen Leake <[email protected]> writes:
> >
> >> The code that generates this is in simplestring_xform.hh:
> >>
> >> template<> inline
> >> origin::type get_made_from<std::string>(std::string const & thing)
> >> {
> >>   return origin::internal;
> >> }
> >>
> >> Is there a way to mark 'thing' as unused? or do we have to disable that
> >> warning with -Wno-unused-parameter?
> >
> > I found three answers on stack overflow:
> >
> > 1) comment out or delete the parameter name:
> >
> >     a) origin::type get_made_from<std::string>(std::string const & /* thing */)
> >
> >     b) origin::type get_made_from<std::string>(std::string const & )
> >
> > 2) cast it to void:
> >
> >     (void)thing;
> >
> > I prefer 1a; it most clearly documents that we know there is a parameter
> > by that name, but we are not using it in this case. Any objections?
>
> However, that is not appropriate in this case (command.hh):
>
> #define CMD_NO_WORKSPACE(C, name, aliases, parent, params, abstract, \
>                          desc, opts)                                 \
> namespace commands {                                                 \
>   class cmd_ ## C : public command                                   \
>   {                                                                  \
>   public:                                                            \
>     cmd_ ## C() : command(name, aliases, parent, false, false,       \
>                           params, abstract, desc, false,             \
>                           options::options_type() | opts, true)      \
>     {}                                                               \
>     virtual void exec(app_state & app,                               \
>                       command_id const & execid,                     \
>                       args_vector const & args) const;               \
>   };                                                                 \
>   cmd_ ## C C ## _cmd;                                               \
> }                                                                    \
> void commands::cmd_ ## C::exec(app_state & app,                      \
>                                command_id const & execid,            \
>                                args_vector const & args) const
>
>
> In most uses of CMD_NO_WORKSPACE, "execid" is not used, but it is used
> in some (cmd_netsync.cc clone).
>
> So we have to use (void)exec_id in the body of each case where it is not
> used.


You could special case GCC and introduce your own macro that expands
to the "unused" attribute in case of GCC:
http://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Function-Attributes.html#index-g_t_0040code_007bunused_007d-attribute_002e-3000

-- 
VZ
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.