相关疑难解决方法(0)

std :: min给出了错误

#include <algorithm>
#include <Windows.h>

int main()
{
    int k = std::min(3, 4);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

什么是Windows正在做,如果我包括Windows.h我不能在Visual Studio 2005中使用std :: min.错误消息是:

error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2005

99
推荐指数
6
解决办法
5万
查看次数

如何处理windows.h中的max宏与std中的max冲突?

所以我试图从cin获得有效的整数输入,并使用了这个问题的答案.

它建议:

#include <Windows.h> // includes WinDef.h which defines min() max()
#include <iostream>
using std::cin;
using std::cout;

void Foo()
{
    int delay = 0;
    do
    {
        if(cin.fail())
        {
            cin.clear();
            cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        }
        cout << "Enter number of seconds between submissions: ";
    } while(!(cin >> delay) || delay == 0);
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个关于Windows的错误,说max宏没有采用那么多的参数.这意味着我必须这样做

do
{
    if(cin.fail())
    {
        cin.clear();
#undef max
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    cout << "Enter number of seconds between submissions: ";
} while(!(cin >> delay) || delay …
Run Code Online (Sandbox Code Playgroud)

c++ iostream cin

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

我可以使用宏的一些技巧?

在我们的遗留代码中,以及我们的现代代码中,我们使用宏来执行代码生成等的漂亮解决方案.我们同时使用###运算符.

我很好奇其他开发人员如何使用宏来做很酷的事情,如果他们根本使用它们的话.

c c++ stringification c-preprocessor

26
推荐指数
13
解决办法
1万
查看次数

如何驯服Windows标题(有用的定义)?

这个问题的答案之一中,jalf谈到了有用的定义NOMINMAX,它可以防止不必要的定义最小/最大宏.是否有其他有用的定义可以帮助控制windows.h(或其他Windows标头,例如Microsoft C运行时标头或STL实现)行为?

c c++ windows macros c-preprocessor

17
推荐指数
2
解决办法
4250
查看次数

具有"min"成员的类的C++初始化列表

我见过的一类,其中一个叫成员变量minmax

class A
{
public:
 A();
 ~A();
 bool min;
 bool max;
 ...
};
Run Code Online (Sandbox Code Playgroud)

用构造函数

A::A()
{
  min=false;
  max=true;
  ...
}
Run Code Online (Sandbox Code Playgroud)

我试图用初始化列表重写它:

A::A():min(false), max(true){}
Run Code Online (Sandbox Code Playgroud)

但是我收到了警告+错误

warning C4003: not enough actual parameters for macro 'min'
error C2059: syntax error : ')'
Run Code Online (Sandbox Code Playgroud)

因为min宏是在中定义的WinDef.h

在没有重命名成员变量的情况下,是否可以在这种情况下使用初始化列表?

c++ windows winapi initialization

4
推荐指数
1
解决办法
160
查看次数