有没有办法禁用 c++ 中旧的 c 风格转换?

发布于 2024-11-05 12:20:38 字数 382 浏览 0 评论 0原文

可能的重复:
如何在我的 C++ 源代码中查找(并替换)所有旧的 C 风格数据类型转换?

我目前正在重构一些旧代码,并且我正在处理的项目有一个仅使用新代码的策略C++ 风格转换。我试图确保我不会错过任何内容,但目前我采用的方法非常粗糙,所以我想知道是否有任何方法可以使旧的 c 样式转换不在 c++ 项目中编译? (或者如果不可能的话至少给出编译器警告)

Possible Duplicate:
How to find (and replace) all old C-style data type casts in my C++ source code?

I'm currently refactoring some old code and the project I am working on has a policy of only using the new c++ style casts. I'm trying to make sure that I don't miss any but currently the approach I'm taking is quite crude so I'm wondering if there is any way of making the old c style casts not compile in a c++ project? (or at least give a compiler warning if this is not possible)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

对你再特殊 2024-11-12 12:20:38

如果您使用 GCC,请将 -Wold-style-cast 添加到命令行。这会给出警告,而不是错误,但您始终可以添加 -Werror,这会将警告(所有警告)转换为错误。

至于其他编译器,似乎没有其他编译器有这样的警告选项。

但这并不重要:GCC 是自由软件,几乎可以在任何可以区分零和一的东西上使用。只需将其与工作站上的主编译器一起安装,或安装到持续集成系统中,并仅将其用于此任务。您会发现手头有两个 C++ 编译器通常非常方便。

如果安装 GCC 确实不适合您,您可能需要查看 如何在我的 C++ 源代码中查找(并替换)所有旧的 C 风格数据类型转换?,其中 <讨论了一些替代方案。

If you use GCC, add -Wold-style-cast to the command line. That gives warnings, not errors, but you can always add -Werror, which turns warnings (all warnings) into errors.

As for other compilers, it seems no other compiler has such a warning option.

But that doesn't really matter: GCC is Free Software, and available on practically anything that can distinguish between zeros and ones. Just install it alongside your main compiler on your workstation, or into your continuous integration system, and use it for this task only. You will find that having two C++ compilers at hand is very convenient in general.

If installing GCC really isn't an option for you, you might want to take a peek at How to find (and replace) all old C-style data type casts in my C++ source code?, where some alternatives are discussed.

油焖大侠 2024-11-12 12:20:38

I recommend using this Perl script. Except for unusual conditions like
(void**)&b.ComInterfaceCall
it just appears to work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文