getch已被弃用
在某个地方,我在大学里做了一些C和C ++,但我并没有太多关注C ++。 现在我想关注C ++,但是当我使用getch()
函数时,我会从下面得到警告。
警告C4996:’getch’:不推荐使用此项目的POSIX名称。 而是使用符合ISO C ++的名称:_getch。 详细信息请参见在线帮助。
现在,我正在使用VS 2005 express,我不知道如何处理这个警告。 我需要在printf()
getch()
之后使用getch()
一条错误消息或其他需要按键命中的内容。
你能帮帮我吗?
Microsoft决定在不使用下划线的情况下标记名称,因为这些名称是为程序员选择保留的。 如果实现特定扩展要遵守C或C ++标准,则应使用以全局命名空间中的下划线开头的名称 – 或者它们应将自身标记为符合标准的组合环境,例如POSIX / ANSI / ISO C,其中函数然后对应于那些标准之一。
阅读关于getcwd()的答案也是如此,PJ Plauger的解释当然是非常了解的。
如果您只想等待用户键入的某些键,则没有理由不使用getchar
。 但有时使用_getch
和朋友对用户来说更加实用和方便。 但是,这些不是由C或C ++标准指定的,因此会限制程序的可移植性。 记在脑子里。
如果您使用的是C ++,为什么选择printf
和getch
? 考虑使用cout
和cin.get
。
使用_getch()而不是getch()
如错误所示,不推荐使用名称getch()
(因为这是Microsoft特定的扩展名),建议使用_getch()
。 我不确定POSIX到底在哪里; POSIX没有定义getch()
,而是包含ISO C标准规定的getchar()
(第298页,草稿链接到因为最终标准不是免费的)。 解决方案是按照建议执行并使用_getch()
,或使用标准C getchar()
。
你为什么需要这个? 如果需要捕获单个字符,为什么不使用getchar()
?