【发布时间】:2013-02-22 09:06:43
【问题描述】:
在我的代码中
#define NOMINMAX
#include <windows.h>
但每当我使用std::max 或std::min 时,智能感知会在该行用红色下划线,即使编译器不会抱怨它。如果我将代码更改为
#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 定义最小值/最大值,那么为什么智能感知认为它们已定义,即使它们没有定义?而且我检查过,我添加的预处理器错误从未被命中。
【问题讨论】:
-
智能感知不理解
NOMINMAX。 -
不幸的是,我最近从这台机器上卸载了 QtCreator,但是如果你有这样的项目,QtCreator 是否可以无条件地索引
windows.h?如果在编译器设置中定义 -DNOMINMAX 会发生什么? -
@DavidSchwartz 确实如此,我也检查过。如果我添加一个
#ifndef NOMINMAX,它的主体是灰色的,如果我删除#define NOMINMAX,它的主体不再是灰色的。 -
@RomanSaveljev 我将 NOMINMAX 添加到 .pro 文件中,但没有帮助。你可能是对的,我一直这么想,可能标准库路径中的头文件只解析一次。
标签: c++ qt c-preprocessor qt-creator