c++ - Qt Creator 的 intellisense 认为 min 和 max 已定义,即使它们没有定义

标签 c++ qt c-preprocessor qt-creator

在我的代码中有

#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 定义最小值/最大值,那么为什么 intellisense 会认为它们已定义,即使它们没有定义?而且我已经检查过,我添加的预处理器错误从未被命中。

最佳答案

其实我并没有卸载它。如果我添加 DEFINES+=NOMINMAX

它有助于整理索引器

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

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

关于c++ - Qt Creator 的 intellisense 认为 min 和 max 已定义,即使它们没有定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020415/

相关文章:

c++ - Qt 树模型与用于存储翻译字典的嵌套映射

c - 错误 : expected identifier or ‘(’ before, 宏定义

c++ - 如何驯服 Windows header (有用的定义)?

c++ - 采用一种显式类型的函数

c++ - 类成员函数声明疑问

c++ - Qt - 如何在 Linux 上动态部署应用程序?

c - 与 C 中的宏相关的语法错误

c++ - 编译器如何处理派生析构函数中的基类析构函数调用?

c++ - 在 OS X 上构建 Qt QIBASE 驱动程序

c++ - 使用Qt线程的困惑