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