有没有办法在c ++中禁用旧的c样式转换

时间:2011-05-07 18:03:52

标签: c++ syntax casting

  

可能重复:
  How to find (and replace) all old C-style data type casts in my C++ source code?

我目前正在重构一些旧代码,而我正在研究的项目只有使用新的c ++样式转换的策略。我正在努力确保我不会错过任何方法,但目前我采用的方法非常粗糙,所以我想知道是否有任何方法可以使旧的c风格转换不能在c ++项目中编译? (或者如果不可能,至少给编译器警告)

2 个答案:

答案 0 :(得分:34)

如果您使用GCC,请在命令行中添加-Wold-style-cast。这会发出警告,而不是错误,但您可以随时添加-Werror,这会将警告(所有警告)变为错误。

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

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

如果安装GCC确实不适合您,您可能需要查看How to find (and replace) all old C-style data type casts in my C++ source code?,其中讨论某些替代方案。

答案 1 :(得分:2)

我建议使用this Perl script。除了像。这样的异常情况     (无效**)及b.ComInterfaceCall 它似乎工作。