c++ - 如何找出 cstyle cast 的实际作用?

标签 c++ c++11 visual-c++ casting

我正在使用一个非常古老的代码库,并且有很多 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/

相关文章:

c++ - 从触摸回调访问 vector 元素的方法时出现 BAD ACCESS 错误

c++ - 在数组中存储整数存储随机值

c++ - QtMultimedia,我如何以任何格式保存录音,如 mp3、wav 或其他格式?

c++ - std::condition_variable 的 notify_all() 和 notify_one() 有什么区别?

c++ - C++中如何将整数转换为字符串

c++ - 失败时 C++ 中的 istream 行为变化

c++ - 如何正确使用转换构造函数?

c++ - 可变参数模板 : producing a tuple of pairs of adjacent elements

c++ - 是否可以从混合的 C++/CLI 代码中调用 IronPython?

c++ - 循环静态链接库会导致更大的输出大小吗?