conio.h 头文件中定义的两个函数有什么区别-
getch() 和 _getch()。
声明有区别吗?还是仅仅是由于标准更新而产生的差异?
这是微软几年前决定更严格地解释 C++ 标准的一部分。它表示全局名称空间中以下划线开头的所有名称都保留供实现使用。这意味着 thatgetch
不是保留名称,而是保留名称_getch
。
所以微软认为“这个函数,以及所有其他 POSIX 函数,都是由实现提供的。让我们通过添加下划线来重命名它们,这样我们就可以将它保存在全局命名空间的“保留”部分中。那这样,名称就不会与用户提供的功能发生冲突。
你可以说这些都是善意的,或者这只是破坏 POSIX 代码的邪恶尝试。我不知道他们的真正动机是什么,但最终结果是,根据微软的说法,getch
它已被弃用,你应该_getch
改用它。
这两个函数都是非标准的(即它们不在 C++ ISO 标准中)。它们是您的特定工具链提供的扩展,因此,您必须检查其文档中的差异。