相关疑难解决方法(0)

Visual C++上NOMINMAX可能出现的问题

NOMINMAX在我的程序中定义其他任何内容时,我可以遇到什么问题?

据我所知,这将使<Windows.h>没有定义minmax宏,从而与STL许多矛盾,例如std::min(),std::max()std::numeric_limits<T>::min()得到解决.

我是否正确地假设只有Windows特定和遗留代码会出现问题?几乎所有的库都不应该依赖min()max()定义为宏?

编辑:其他Windows标题是否会出现问题?

c++ windows visual-c++

33
推荐指数
2
解决办法
2万
查看次数

找到C++中3个数字中最小的数字

有没有办法让这个功能更优雅?我是C++的新手,我不知道是否有更标准化的方法来做到这一点.这可以变成一个循环,所以变量的数量不受我的代码限制吗?

float smallest(int x, int y, int z) {

  int smallest = 99999;

  if (x < smallest)
    smallest=x;
  if (y < smallest)
    smallest=y;
  if(z < smallest)
    smallest=z;

  return smallest;
}
Run Code Online (Sandbox Code Playgroud)

c++ max min

28
推荐指数
6
解决办法
8万
查看次数

使用#include <Windows.h时std :: cin.ignore(std :: numeric_limits <std :: streamsize> :: max(),'\n')错误

在VS 2010 Pro中,我收到一个编译错误,指出命令的max()部分有"预期的标识符".似乎在windows.h头文件中有一个max(a,b)标识,它想要使用它.

我也尝试使用#include,但这并没有解决问题

反正有没有绕过这个?

c++ ignore max cin

6
推荐指数
1
解决办法
2797
查看次数

为什么parens会阻止宏观替代?

在研究windows min/ maxmacro问题的解决方案时,我找到了一个我非常喜欢的答案,但我不明白它为什么会起作用.C++规范中是否有一些内容表明在parens中不会发生宏替换?如果是这样的话呢?这只是其他东西的副作用,还是那种以这种方式工作的语言?如果我使用额外的parens max宏不会导致问题:

(std::numeric_limits<int>::max)()
Run Code Online (Sandbox Code Playgroud)

我正在大规模的MFC项目中工作,有一些Windows库使用这些宏,所以我不想使用这个#undef技巧.

我的另一个问题是这个.#undef max.cpp文件中是否只影响它在其中使用的文件,或者它是否会max为其他编译单元取消定义?

c++ stl

2
推荐指数
1
解决办法
178
查看次数

标签 统计

c++ ×4

max ×2

cin ×1

ignore ×1

min ×1

stl ×1

visual-c++ ×1

windows ×1