6031: return 值被忽略 (getchar()) 在 visual studio 2019

6031: return value ignored (getchar()) In visual studio 2019

它不会影响我的代码,但在我更新 visual studio 之前我从未见过这样的问题。我不知道这是否相关,但我很困惑为什么会出现问题。

#include <iostream>
#include <string>
#include <array>

using namespace std;

int main() {

    const int SIZE = 3;

    array<string, SIZE> names = { "S","A","W" };
    array<string, SIZE>::iterator it;

    cout << "names: \n";
    for (it = names.begin(); it != names.end(); it++)
        cout << *it << endl;


    getchar();
    return 0;
}

更新 visual studio 时,他们向 getchar 添加了一个 [[nodiscard]] 属性。这告诉编译器在函数的 return 值被忽略时警告用户。您可以在这里找到更多信息:https://en.cppreference.com/w/cpp/language/attributes/nodiscard

在这种情况下,因为您使用 getchar 只是为了防止 window 关闭,所以您不需要 return 值,因此您可以忽略此警告.

我们可以通过显式忽略 return 值来消除警告:

(void)getchar(); //Explicitly ignore return value

在这种情况下,我个人的解决方法是在控制台中暂停,像这样加倍:

getchar();getchar();