警告c4996有关详细信息,请参阅在线帮助

时间:2014-04-29 03:07:14

标签: c visual-c++

警告C4996:' getch':不推荐使用此项目的POSIX名称。而是使用符合ISO C ++的名称:_getch。

2 个答案:

答案 0 :(得分:2)

此编译器警告表示代码中存在对'getch()'函数的引用。编译器建议更新代码以改为使用'_getch()'函数。

通常,此错误将在Microsoft开发环境中发生。 回顾 ,很久以前,微软推出了'getch()'和'getche()']函数。这些函数将等待用户按下某个键,然后将该键字符重新返回给调用者。 'getch()'函数不会将键“回显”回(DOS或早期Windows)屏幕,而'getche()'会回显按下屏幕的键。

'getch()'和'getche()'函数未被其他环境采用,例如* nix。最终,微软选择使用领先的下划线重命名这些功能,以帮助识别其专有(微软)性质。

通过错误消息的外观,我假设“ISO C ++”标准采用了'_getch()'函数。 (但是,我不做C ++,因为它对许多像我这样的C程序员来说是可憎的。)

注意:* nix'curses'库也运行getch(),它与旧的Microsoft函数有些相似。

问题中提到的编译器警告就是这样;一个警告。最有可能的是,代码仍然可以编译和运行(在Microsoft环境中)。

答案 1 :(得分:0)

如果您真的在Windows标头源中查找此类内容,您会发现这些符号实际上并不是“已弃用”。对于MS而言,通过发出这些警告使移植应用程序变得更加烦人是相当愚蠢的。

您需要添加/D_CRT_NONSTDC_NO_DEPRECATE来忽略这些警告。除了像#define _foo foo

这样愚蠢的东西之外,你几乎无能为力