gpt4 book ai didi

c++ - 如何在没有 clang-tidy 警告的情况下使用 union ?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:26 24 4
gpt4 key购买 nike

Clang-tidy 的 cppcoreguidelines-pro-type-union-access规则本质上是对 union 的完全禁止,它标记了 union 成员的所有访问权限。

我的库有一个外部“C”接口(interface),其结构包含 union 。我不能在头文件中使用变体,这些变体应该可以从 C 而不仅仅是 C++ 使用。

显然,在我使用 union 的任何地方用 NOLINT 乱码代码并不是一个好主意。

除了禁用此检查之外,还有其他解决方法吗?

最佳答案

这取决于您对 union 的使用,特别是取决于您的问题中提到的 union 使用在您的代码中的分散程度。如果你到处使用它,除了禁用检查之外你无能为力。

如果它被限制在几个特定的​​地方,你可以使用 -line-filter 选项来过滤掉使用它的文件(甚至行)。棘手的部分是 -line-filter 过滤 IN 行。

这会过滤掉来自 unions.cpp 的所有警告(假设它少于 9999999 行):

-line-filter=[{"name":"unions.cpp","lines":[[9999999,9999999]]},{"name":".h"},{"name":".cpp"}]

{"name":".h"},{"name":".cpp"} 过滤其余文件,否则您根本看不到任何警告。

或者,如果您只想从 unions.cpp 中过滤掉一些行:

-line-filter=[{"name":"unions.cpp","lines":[[1,10],[12,100]]}},{"name":".h"},{"name":".cpp"}]

本例中将跳过第 11 行。

显然,这会过滤掉来自该文件(或行)的所有检查的警告,因此您可能希望单独运行该检查。

关于c++ - 如何在没有 clang-tidy 警告的情况下使用 union ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57204494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com