C+++ 11(或较低)中的gcc __attribute __((未使用))的视觉工作室等效吗?

发布于 2025-01-22 11:01:44 字数 1049 浏览 0 评论 0 原文

我正在尝试编写一个宏来使用用户想要的抑制变量警告(例如,当您尚未实现整个类时,在派生的类中)。我知道我可以删除变量名称...但是要明确我更喜欢宏)。

到目前为止,我已经使用了

#ifdef WIN32
    #define UNUSED(x) x
#else
    #define x __attribute__((unused))
#endif

void test_fn(int unused(test_var)){...}

我看到了这篇文章:抑制 - 不使用的inver- in-nes-nes-in-in-n and-is-n nonever-never-never-never-never-never-never-never-never-in-never-in-never-in-n in-ver-in-never-in-nes-nes-in-c-sharp-in-n-c-sharp-in-charp ins-in-n c-sharp in -c-sharp ,但这给了我一个无法真正使用的结果(多行#pragmas)。

因此,我的问题是,MSVS等于 __属性__(((未使用)))? - IE在同一条线上?

注意:这个问题没有回答如何做我要问的事情: how-do-i-i-best-silence-a-about-about-unused-unused-bariables 因为它不涵盖如何以某种方式以某种方式使用它在函数原型中与MSV和GCC一起使用。

I am trying to write a macro to use suppress unused variable warnings when the user wants them (e.g. in derived classes when you have not implemented the whole class yet). I know that I can remove the variable name... but to make it clear I would prefer a macro).

So far I have this:

#ifdef WIN32
    #define UNUSED(x) x
#else
    #define x __attribute__((unused))
#endif

Used like:

void test_fn(int UNUSED(test_var)) {...}

I saw this post: suppressing-is-never-used-and-is-never-assigned-to-warnings-in-c-sharp, but it gave me a result that I can't really use (multiline #pragmas).

So my question is, is there a MSVS equivalent of the __attribute__((unused))? - i.e. on the same line?

Note: this question does not answer how to do what I am asking: how-do-i-best-silence-a-warning-about-unused-variables since it does not cover how to use it within the function prototype in a way that works with both MSVS and gcc.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

涙—继续流 2025-01-29 11:01:44

如果可能未使用变量或函数 - gcc的 __属性__(((未使用)) 旨在抑制有关它的任何警告。

现在,如果您想要一些便携式的东西,则有多种选择:

  1. 如果您不使用它,
    1. 这是一个功能题目,只是不命名。
    2. 否则,根本不创建它。
  2. 如果在某些情况下可以使用它,只需通过将其施放到 void

    中,只需使用它一次。

     (void)Yountally_unused;
     

    是的,第二个选项不在原型中,而是必须制定津贴。

  3. 升级到C ++ 17并使用

If a variable or function-argument is potentially unused, gcc's __attribute__((unused)) is designed to suppress any warning about it.

Now, if you want something portable, there are multiple choices:

  1. If you don't use it,
    1. and it's a function-argument, just don't name it.
    2. otherwise, simply don't create it.
  2. If it might be used under some circumstances, simply use it once definitely by casting to void:

    (void)potentially_unused;
    

    Yes, the second option is not in the prototype, but one has to make allowances.

  3. Upgrade to C++17 and use [[maybe_unused]].

独木成林 2025-01-29 11:01:44

如果您的使用仅

void test_fn(int UNUSED(test_var)) {...}

我知道我可以删除变量名称...但是要明确我更喜欢一个宏)。

因此,通过宏删除可变名称:

您可以选择

#define UNUSED(x) /*Empty*/

If your usage is only

void test_fn(int UNUSED(test_var)) {...}

I know that I can remove the variable name... but to make it clear I would prefer a macro).

So remove variable name through MACRO:

You can go with

#define UNUSED(x) /*Empty*/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文