C ++中不推荐使用的强制转换

时间:2013-01-16 11:17:35

标签: c++ compiler-construction

我正在使用Code::Blocks来学习C ++。请考虑以下代码:

C

#include <iostream>
using namespace std;

int main(int argc, char** argv)
{
    const int i = 0;
    int* j = (int*)&i;
}

我在上面的程序中使用的强制转换已经在C ++中被弃用(如果我对此是正确的),但是在C中遵循.Code :: Blocks IDE没有向我显示此代码的任何警告。我知道C ++支持显式转换,例如const_caststatic_cast等。

我的问题是:互联网上是否有任何免费的IDE可以显示对这种弃用语法的警告?

2 个答案:

答案 0 :(得分:7)

我假设CodeBlocks正在使用gcc进行编译。您可以通过添加编译器标志-Wold-style-cast来启用警告。你可能不得不在CodeBlocks中找到解决方法,找出放置该标志的位置。您还可以使用-Wall启用更多警告。

答案 1 :(得分:6)

您还可以在Code :: Blocks中启用这些警告。您需要为此添加编译器标志-Wold-style-cast。这就是我在Code :: Blocks中所做的:

  • 转到顶部菜单中的项目
  • 选择构建选项
  • “编译器设置”选项卡(默认选中)
  • 其他选项标签
  • 在文本字段中输入:-Wold-style-cast

然后你会得到这样的输出:

enter image description here