我有一个.h文件,被C和C++源文件都包含。它的内容被包裹在HTML标签`
`中。
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif
然而,当我将它包含在.cpp文件中时,clang-tidy会发出C++特定的消息,例如:
- 警告:在C ++中包含'stdbool.h'没有任何效果;考虑删除它 [hicpp-deprecated-headers,modernize-deprecated-headers]
- 警告:包含已弃用的C ++头文件'stdlib.h';考虑使用'cstdlib'代替 [hicpp-deprecated-headers,modernize-deprecated-headers]
- 警告:使用'typedef'之前,应该使用'using' [modernize-use-using]
我喜欢这些检查,并希望在我的clang-tidy配置中保持其活动状态,但当然,仅适用于C ++代码。 我无法更改头文件以使用using
而不是typedef
或<cstdlib>
而不是<stdlib.h>
,因为它也被C源包含,因此需要extern "C"
。
有没有办法告诉clang-tidy将extern "C"
中的代码视为C而不是C ++,即使从.cpp文件包含?
clang-tidy版本为12.0.0。
extern
块内部进行,并且不建议包含C版本的头文件(正式上是未定义行为)。 - Swift - Friday Pie