Joe*_*Joe 3 c++ visual-studio visual-studio-2013 visual-studio-2017
在我看来,VS2017无法捕获一些相当明显的编译器警告,旧版本没有.这看起来很基本的,我认为我猜这个问题已经是我丢失的东西(例如,一些新的默认编译器设置,也许?).有没有人见过这个?
为了测试这一点,我在2013年和2017年都创建了一个简单的控制台应用程序.我对项目设置进行的唯一更改是将编译器警告级别设置为4并将警告报告为错误.以下是整个来源
在VS2013中,这失败了.在2017年,它建立得很好......
// TestWarning4127.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
int main()
{
if (true) // *** SHOULD generate warning 4127
std::cout << "Warning";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西......?
如在编译器警告(level4)官方文档中所述,在VS 2017中使用if或while处理微不足道的常量(例如1或true不生成警告).摘自官方文件:
if语句或while循环的控制表达式求值为常量.由于它们常见的习惯用法,诸如1或true之类的普通常量不会触发警告,除非它们是表达式中的操作的结果.
据说这不是VS 2013中的警告,其默认警告级别为W3.只有升高的W4设置才会报告VS 2013.它在VS 2017中被完全删除了.
为了比较,GCC也不会产生警告: Coliru上的实例.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |