如何从Visual Studio C编译器获取更多有用的警告?

奥林

我正在使用Visual Studio 2015 C编译器,但发现它缺少警告。
例如,此代码编译时没有警告或错误(带有-Wall选项):

#include<stdlib.h>

int main(void)
{
    int i = 2;

    free(&i);
// The compiler should tell me "You are trying to free something not on the heap".

    return 0;
}

有很多原因导致崩溃或/和未定义的行为无法通过-W4检测到-Wall还有其他选择可用来警告这些错误吗?
我知道我可以使用另一种编译器,但是当您针对Windows平台时,我听说Visual Studio附带的一种更好。

麦克史蒂夫

正如您正确指出的那样,使用编译器生成警告不是完全检测到未定义的行为。

启用优化功能奇怪地改善了编译器的报告。它可以发现尚未设置的变量(值跟踪)和一些不需要的值。

要比编译器更进一步,那么诸如Coveritypc-lint之类的静态分析工具会进行更强大的分析。但是,这些产品也是虚假的,它们会突出一些正确的问题,它们会误解并仍然错过某些不确定的行为。

特别是如果您是跨平台编译的话,我会对编译器的警告(使用gcc和VS进行清理确实很困难,并且可能会损坏您的代码)采取更为宽松的态度​​,并将您的静态分析工具视为代码查看器。当它提示失败时,请予以尊重,但要假设它可能对代码有误解。

我有一个pc-lint的副本在附近闲逛并得到了...

--- Module:   file.c (C)
        _
    free(&i);
file.c(7) : Warning 424: Inappropriate deallocation (free) for 'auto' data

---

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Visual Studio 2017中使用CMake设置编译器选项

所有Visual Studio编译器错误和警告的列表及其编号

是否有与Visual Studio C ++编译器等效的-ffast-math标志

如何在Windows下使用cmake生成使用Intel编译器的Visual Studio项目

如何使Visual Studio 2015 C ++项目与Visual Studio 2010兼容?

Visual Studio编译器如何指定生成cpp的包含路径

如何在Visual Studio中查看模板编译器错误详细信息

如何在Visual Studio 2015中使用roslyn C#编译器?

Visual Studio C ++编译器怪异行为

Visual Studio 2015-编译器警告(等级2)C4146

如何配置Visual Studio代码以编译scons?

如何解决“ Build:Unknown编译器选项'listemittedfiles'。” 在Visual Studio 2015 Update 3上?

Python 3,如何设置Visual Studio C ++ 2015编译器?

如何使用Visual Studio编译Windows的GMP

使用Visual Studio编译器分析内联的C ++函数

自Visual Studio 15.6.2编译器更新标准以来,是否存在新的C ++ 17 [[nodiscard]]警告?

编译Clojure时获得更多有用的警告

如何在Visual Studio Code for TypeScript中完全导入而获得编译器错误消息?

如何在Visual Studio 2012 Release 2中获得.less编译器支持?

如何防止输出屏幕在Visual Studio 2013 C ++编译器中消失

如何在Visual Studio中获取行号

C ++:使用Visual Studio编译器时的const指针

拆解Visual Studio Intel编译器C ++代码

如何在Visual Studio中使用更少的自动编译器

如何衡量 Visual Studio 编译器的性能?

使用 Visual Studio 2017 构建 SSDT 项目时如何将 /unsafe 标志传递给 C# 编译器

从 Visual Studio 代码中排除 C# 编译器警告

Visual Studio Code 的 C/C++ 扩展如何找到默认编译器?

如何使用 Visual Studio 编译器在 Windows 上编译 cython 编译的 c 代码