回到过去,我在大学里学过一些 C 和 C++,但我对 C++ 的关注并不多。现在我想关注 C++,但是当我使用该getch()
函数时,我从下面收到警告。
警告 C4996:'getch':不推荐使用此项目的 POSIX 名称。而是使用符合 ISO C++ 的名称:_getch。详细信息请参见在线帮助。
现在,我正在使用 VS 2005 express,我不知道如何处理这个警告。我需要在出现错误消息或需要按键的其他内容getch()
后使用。printf()
你能帮我解决这个问题吗?
回到过去,我在大学里学过一些 C 和 C++,但我对 C++ 的关注并不多。现在我想关注 C++,但是当我使用该getch()
函数时,我从下面收到警告。
警告 C4996:'getch':不推荐使用此项目的 POSIX 名称。而是使用符合 ISO C++ 的名称:_getch。详细信息请参见在线帮助。
现在,我正在使用 VS 2005 express,我不知道如何处理这个警告。我需要在出现错误消息或需要按键的其他内容getch()
后使用。printf()
你能帮我解决这个问题吗?
Microsoft 决定不推荐使用不带下划线的名称,因为这些名称是保留给程序员选择的。如果特定于实现的扩展想要遵守 C 或 C++ 标准,则它们应该在全局命名空间中使用以下划线开头的名称——或者它们应该将自己标记为符合标准的组合环境,例如 POSIX/ANSI/ISO C,其中这样的功能则对应于这些标准之一。
也阅读这个关于 getcwd() 的答案,以获得 PJ Plauger 的解释,他当然非常了解这些东西。
如果您只对等待用户键入的某些键感兴趣,那么真的没有理由不使用getchar
. 但有时只是更实用、更方便用户_getch
和朋友使用。但是,C 或 C++ 标准没有指定这些,因此会限制程序的可移植性。记住这一点。
如果你喜欢 C++,为什么printf
和getch
?考虑使用cout
andcin.get
代替。
使用 _getch() 而不是 getch()
你为什么需要这个?getchar()
如果您需要捕获单个字符,为什么不使用呢?
您可以使用“std::getc(stdin);”。它的工作方式类似于“getch();” 在我的程序中。我认为这是 'getch()' 的一个很好的选择如果我错了,请告诉我。
#include <cstdio>
switch (std::getc(stdin)) {
case 'a': cout << 'a' << endl ; break;
case 'b': cout << 'b' << endl ; break;
default: cout << '$' << endl; break;
}
如果您在控制台上输入“a”,它会输出“a”。