我正在使用一个非常古老的代码库,并且有很多 C 风格的强制转换。
我知道 C 风格的转换可以做什么,但我如何快速找出像这样的一行代码的作用:
WhateverClass* oldD = (WhateverClass*)d->GetHandle();
我知道我可以检查代码,找出 GetHandle()
返回的内容,确定它与 WhateverClass
的关系,然后推断出五种可能中的哪一种c 风格转换的结果适用于此。
我仍然是一个容易出错的人,我更喜欢一个没有推理的明确答案。
我使用的是 Visual Studio 2017,但我也有兴趣了解其他 IDE 和编译器。
最佳答案
使用clang-tidy - 这张支票 cppcoreguidelines-pro-type-cstyle-cast标记执行其中任何一个的 c 样式转换:
- 静态转换
- 沮丧
- const_cast
- 重新解释_cast
更多信息可以从其 source 中阅读.诊断似乎非常准确,使用“-fix”选项您可以尝试自动修复。
还有google-readability-casting来自同一个 clang-tidy。
关于c++ - 如何找出 cstyle cast 的实际作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65338453/