Tak więc próbowałem uzyskać poprawne dane wejściowe z liczby całkowitej i użyłem odpowiedzi na tę question.Jak radzić sobie z makrem maks. W Windows.h, kolidując z maks. W standardzie?
Zaleca:
#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);
}
co daje mi błąd w systemie Windows, mówiąc, że max
makro nie bierze, że wiele argumentów. Aby to zrobić, zadzwoń. To dość brzydkie; Czy istnieje lepszy sposób obejścia tego problemu? Może powinienem przechowywać definicję max
i redefiniować ją później?
Czy dołączyć? Czemu? Jeśli naprawdę tego potrzebujesz, możesz uniknąć zdefiniowania _min_ i _max_ makr, definiując ** NOMINMAX ** przed jego włączeniem. –
Czy używasz "namespace std"? Jeśli tak, celowo łączysz przestrzenie nazw. –
@PaulBeckingham: makra nie mają przestrzeni nazw, a zatem włączając windows.h bez żadnych zabezpieczeń zawsze będą kolidować z 'std :: min' /' std :: max' – PlasmaHH