C++ 缺少使用Qt的转换警告

C++ 缺少使用Qt的转换警告,c++,qt,warnings,C++,Qt,Warnings,下面的代码生成一个警告: 警告C4244:“正在初始化”:从“int64\u t”转换为“int”,可能会丢失数据 使用第19条(与-W3) #包括 #包括 int main(){ int64_t a=INT_MAX; int b=a+1; } 然而,似乎只要我包括任何与Qt相关的内容,比如: #include <QApplication> #包括 警告消失了。但我想为我自己的文件显示这些警告。这是不是Qt隐藏了自己的警告泄漏到我的源代码中?我可以避免吗?qglobal.h会禁

下面的代码生成一个警告:

警告C4244:“正在初始化”:从“int64\u t”转换为“int”,可能会丢失数据

使用第19条(与
-W3

#包括
#包括
int main(){
int64_t a=INT_MAX;
int b=a+1;
}
然而,似乎只要我包括任何与Qt相关的内容,比如:

#include <QApplication>
#包括

警告消失了。但我想为我自己的文件显示这些警告。这是不是Qt隐藏了自己的警告泄漏到我的源代码中?我可以避免吗?

qglobal.h会禁用一堆过于详细的警告,而qglobal.h几乎被任何Qt头(间接)包括在内。相关代码为


要重新启用它们,
QT\u CC\u警告
添加到您的defines
(在qmake项目中,
defines+=QT\u CC\u警告
)。我很确定这将触发来自Qt头的警告…

事实上,这是有效的,即我在Qt头中的大量警告中看到了自己的警告。在我的实际项目中,我使用
/WX
进行编译(警告为错误),所以我不能简单地启用它。不是Windows用户,所以我不确定从这个角度来清除Qt头需要做什么。你可以禁用Qt自己的逻辑,并编写几个宏来推送所有这些禁用警告并弹出它们。然后,在Qt的inclusion周围使用宏。事实上,它看起来像是在
#pragma warning(push)…中包装include#pragma警告(pop)
有效。我还发现了与此相关的qt特定错误报告:。但是,在报告之后的4年里,似乎没有发生任何事情。嗯,警告按钮/弹出按钮没有像我预期的那样起作用。包含进行此包装的标题的标题仍会收到Qt警告。
#include <QApplication>