QT创建者没有警告

no warnings in QT creator

本文关键字:警告 创建者 QT      更新时间:2023-10-16

我几乎看不到程序中的任何警告。

我的CPP文件:

#include <iostream>
using namespace std;
int main()
{
    long long int ll = 100000000067;
    unsigned short sh = ll; //no warning here, why?
    cout << sh << " " << ll << endl;

    int s;  //warning only here: warning: unused variable ‘s’ [-Wunused-variable]
    return 0;
}

我的pro文件:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
QMAKE_CXXFLAGS += -Wall -Wextra -pedantic

我尝试将项目与CMAKE一起使用,但结果是相同的。

根据GCC文档

-wconversion

警告可能会改变价值的隐式转换。这包括真实和整数之间的转换,例如x double时的ABS(X);签名和未签名之间的转换,例如Unigned UI = -1;转换为较小类型,例如SQRTF(M_PI)。请勿警告诸如ABS((int)X)和UI =(unsigned)-1之类的显式演员,或者如果不像ABS中的转换更改值(2.0)。可以使用-wno-sign-conserverion禁用有关签名整数和未签名整数之间转换的警告。对于C ,还警告要使用户定义的转换混淆过载分辨率;以及从未使用类型转换操作员的转换:转换为void,相同类型,基类或对它们的引用。除非明确启用-wsign -conversion,否则在C 中默认禁用有关签名和未签名整数之间转换的警告。

对我来说,您的示例-Wconversion生成

~/main.cpp:9: warning: conversion to 'short unsigned int' from 'long long int' may alter its value [-Wconversion]
   unsigned short sh = ll; //no warning here, why?
                       ^