Qt Creator的智能感知认为最小值和最大值是定义的,即使它们不是

Qt Creator's intellisense thinks that min and max were defined even though they weren't

本文关键字:定义 感知 智能 Creator Qt 最小值 最大值      更新时间:2023-10-16

在我的代码中,我有

#define NOMINMAX
#include <windows.h>

但是,每当我使用std::maxstd::min时,intellisense就会用红色下划线,即使编译器对此没有抱怨。如果我将代码更改为

#define NOMINMAX
#include <windows.h>
// make sure they min/max weren't defined
#if defined(min) || defined(max)
#error "min or max were defined"
#endif
// but intellisense still thinks they were, 
// so this is needed
#undef min
#undef max

问题消失了。但是定义NOMINMAX阻止了windows.h定义min/max,那么为什么intelligense认为它们是定义的,即使它们不是?我已经检查过了,我添加的预处理器错误永远不会被命中。

实际上,我没有卸载它。如果我添加DEFINES+=NOMINMAX ,它有助于整理索引器

然后关闭并重新打开项目。尽管每次更改.pro文件后,QtCreator都会告诉"正在分析",但我并没有看到立即的效果。看起来如果你重新打开项目,它会更好地"分析"

我的QtCreator版本是2.6.1,我使用Qt5.0.0