Windows.h 和Std 之間的最小和最大宏衝突
在C 中處理輸入驗證時,可能會遇到以下衝突: Windows.h 中定義的max 巨集和標準函式庫中的max 函數。當嘗試使用忽略函數清除輸入流錯誤標誌時,可能會發生這種情況。
要解決此問題,請考慮使用以下方法:
#define NOMINMAX #include <Windows.h> #include <iostream> 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); }
NOMINMAX 巨集會抑制min 和max 定義在Windows.h 中,允許程式使用標準庫中的max 函數而不發生衝突。這種方法無需手動取消定義 max 巨集並稍後重新定義。
以上是如何解決Windows.h和標準函式庫之間的「max」巨集衝突?的詳細內容。更多資訊請關注PHP中文網其他相關文章!