抑制 Xcode 对库 header 中内联函数的未使用函数警告的正确方法

Correct way to suppress Xcode's unused function warning for inline functions in library header

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

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

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

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

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

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

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

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

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