【问题标题】:Disable one unused variable warning禁用一个未使用的变量警告
【发布时间】:2014-02-19 07:38:38
【问题描述】:

我怎样才能只在一个地方禁用一个警告?

我有一个暂时不用的变量。 Xcode 向我显示有关“未使用变量”的警告。我想禁用警告,但仅针对此变量,并非所有此类警告。

是否可以不设置/获取此变量的值?

【问题讨论】:

  • 好吧,你可以简单地 NSLog 那个变量。或者你可以忽略警告。有什么特别的原因让你如此困扰?
  • @user1349663 对NSLog 来说并不是一个好的建议。这只会导致控制台中出现不需要的负载垃圾。
  • @Popeye 真的。我只是建议它,因为他/她说该变量“暂时未使用”(即他/她稍后将使用它并完成警告和日志。但我明白你的意思。
  • 我问这个问题是因为:1)我导入了一个库作为代码,其中有一些未使用的变量,但我不想编辑它; 2)我用静态变量替换了全局#define ... - 代码是可行的,但是这个字符串被突出显示为未使用(但它确实在其他文件中使用)

标签: objective-c xcode compiler-warnings unused-variables


【解决方案1】:

很简单:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-variable"
    NSUInteger abc; /// Your unused variable
#pragma clang diagnostic pop

但保留未使用的变量是多余的,而且通常是个坏主意。应该删除未使用的代码。如果您使用 git,所有更改仍在您的 repo 中,如果您发现此变量是必要的,您可以恢复您的代码。

【讨论】:

    【解决方案2】:

    来自GCC / Specifying Attributes of Variables(也被 Clang 理解):

    int x __attribute__ ((unused));
    

    int y __attribute__((unused)) = initialValue ;
    

    【讨论】:

    • 几乎,你应该提到,如果它写成static int x = ...;,那么应该在中间添加额外的代码:`static int x attribute ((unused)) = 。 ..;"
    • @user2159978:通常是这样(不仅适用于静态变量)。我已经相应地更新了答案。感谢您的反馈。
    【解决方案3】:
    __unused int theInt = 0;
    // there will be no warning, but you are still able to use `theInt` in the future
    

    【讨论】:

      【解决方案4】:

      最短的击键答案,改变:

      int x; // this variable temporarily unused
      

      到:

      // int x; // this variable temporarily unused
      

      警告就会消失。此外,当您再次需要该变量时,您不能忘记将其删除,您可以使用任何保留声明变量的方法来执行此操作。

      如果您希望删除更加明显,但希望保留您不能忘记删除的属性,请尝试:

      #if 0
      int x; // this variable temporarily unused
      #endif
      

      HTH

      【讨论】:

      • 错误答案。我知道 cmets //#if 0。我只需要禁用警告,而不需要删除/评论变量
      • @user2159978 - 我确实想知道你为什么要保留一个未使用的变量。一个原因可能是保持对象 size 相同,但这对于 Objective-C 对象来说不太可能,所以我不考虑它。您能说一下为什么需要为不使用的变量分配存储空间吗?只是好奇。
      • 我在评论中回答了我的问题
      • @user2159978 - 我现在明白了。对于 (2),您应该查看 extern,因此您只有一个变量,而不是每个文件 1 个变量,其中一些未使用。对于(1)我不明白为什么添加属性不是编辑,但所有方法都有效,你应该选择你喜欢的!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多