【问题标题】:How to supress unused (void **arg) parameter? [duplicate]如何抑制未使用的(void **arg)参数? [复制]
【发布时间】:2021-12-13 00:52:53
【问题描述】:

在下面的函数中,我没有使用参数 (void **arg)。但由于它在函数编译器中未使用,因此出现以下错误:

error: unused parameter 'arg' [-Werror=unused-parameter]
bool decodeString(pb_istream_t *stream, const pb_field_t *field, void **arg)

我试图通过在函数内写入 void(arg) 来抑制它,但没有任何运气。 任何人都可以帮助我正确的方法吗?

【问题讨论】:

  • 省略变量名:bool decodeString(pb_istream_t *stream, const pb_field_t *field, void **arg) 变为 bool decodeString(pb_istream_t *stream, const pb_field_t *field, void **)
  • @user4581301。这值得回答。我会赞成。
  • 旁注:我更喜欢注释掉名称bool decodeString(pb_istream_t *stream, const pb_field_t *field, void ** /*arg*/ ),因为该名称可能包含有关如何使用参数的有用信息,如果该信息以后变得重要。
  • 这能回答你的问题吗? How to suppress "unused parameter" warnings in C?
  • @MadPhysicist 仅适用于 C++。 dbush 下面的答案适用于 C 和 C++。请注意,我的 C 已经过时了。可能已经改变了。

标签: c++ c unused-variables


【解决方案1】:

在转换为void 的表达式中使用参数。那么这个参数就被“使用”了。

bool decodeString(pb_istream_t *stream, const pb_field_t *field, void **arg)
{
    (void)arg;
    ...
}

【讨论】:

  • 这个不行,在stackoverflow.com/questions/3599160/…找到了类似的答案,之前试过了。错误:变量或字段 'arg' 声明为 void void(arg);
  • 非常小心地执行此操作,因为从概念上讲,您已经引发了对值的读取。我个人会评论arg - 您不会失去该功能的自我评论性质,如果需要,您可以随时取消评论。不过,这是一种很好的惯用技巧(尤其是在 C 语言中)。尽管我确实记得读过一些关于由此产生的令人讨厌的错误的信息,但 gcc 和优化已达到最大值。不过可能是梦到了。
  • @razz,如果这在 C 中不起作用,那么您还有第二个问题。
  • 你也可以int decodeString(void **) { /* ... */ }
  • @razz 这是一个单独的问题,应该在单独的问题中。
猜你喜欢
  • 1970-01-01
  • 2014-04-24
  • 2014-12-23
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
相关资源
最近更新 更多