【问题标题】:Correct way to suppress Xcode's unused function warning for inline functions in library header为库头中的内联函数抑制 Xcode 未使用函数警告的正确方法
【发布时间】:2016-11-01 06:29:12
【问题描述】:

对于库头中的函数,抑制 Xcode 未使用函数警告的正确方法是什么?

例如,我在 MathUtils.h 中定义了以下函数:

namespace MathUtils {
    static std::complex<double> cis(double x) {
        return std::complex<double>(cos(x), sin(x));
    }
    ...
}

包含此头文件但未使用此特定功能的源文件,触发警告。

我可以在函数周围添加一个警告编译指示来禁用警告,但这似乎不是正确的方法 - 这似乎是一个普遍问题。

【问题讨论】:

  • 触发警告时有哪些编译器选项? xcode 和 clang 的版本是什么?
  • Xcode 7/8。相关警告是未使用的函数。
  • Danra,带有所有命令行选项的完整编译器命令? (检查完整的构建日志 - “扩展所有成绩单” - stackoverflow.com/questions/19014359/… - 应该有带有clang的命令)
  • 这是它的大部分荣耀(一些包括、定义和路径已编辑)pastebin.com/6U5eXUGJ

标签: c++ xcode warnings header-files


【解决方案1】:

将函数更改为 static inline 而不仅仅是 static 可以解决问题。

【讨论】:

  • 我已将静态方法更改为静态内联,已构建,但在 Xcode 9.1 上仍然收到“未使用函数”警告。
  • “静态内联”对我也不起作用(Xcode 12)
【解决方案2】:

如果您使用-isystem 而不是-I 指定文件的位置,clang 将默默地忽略头文件中的所有警告。如需更多信息,请参阅http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-in-system-headers

要使用 XCode 执行此操作,据我所知,您必须将适当的编译器标志添加到构建设置的“其他 C++ 标志”部分。

此外,您只会收到警告,因为您使用 static 定义了该函数 - 这意味着该函数在您包含标题的每个翻译单元中单独定义,并且对任何其他单元都不可见。您只需删除 static 关键字即可消除错误。

【讨论】:

  • 删除静态会导致链接器错误,以防标头包含在多个模块中。
猜你喜欢
  • 2015-10-16
  • 2014-04-24
  • 1970-01-01
  • 2012-08-10
  • 2015-06-02
  • 1970-01-01
  • 2021-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多