[英]How can I use unions without clang-tidy warnings?
Clang-tidy 的cppcoreguidelines-pro-type-union-access規則本質上是完全禁止工會,它標記了對工會成員的所有訪問。
我的圖書館有一個 extern "C" 接口,其結構包含一個聯合。 我不能在應該可以從 C 而不僅僅是 C++ 中使用的頭文件中使用變體。
顯然,在我使用 union 的任何地方使用 NOLINT 向代碼發送垃圾郵件並不是一個好主意。
除了禁用此檢查之外,還有其他解決方法嗎?
這取決於您對聯合的使用,特別是取決於您的問題中提到的聯合使用在您的代碼中的分散程度。 如果您到處使用它,除了禁用檢查之外,您無能為力。
如果它被限制在幾個特定的地方,你可以使用-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 行。
顯然,這會過濾掉該文件(或行)中所有檢查的警告,因此您可能希望單獨運行該檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.