C++ getch()和_getch()之间的区别

C++ getch()和_getch()之间的区别,c++,C++,在conio.h头文件中定义的两个函数之间有什么区别- getch()和_getch() 脱毛有区别吗?还是因为更新的标准只是一个差异? < P>这两个函数都是非标准的(即它们不在C++ ISO标准中)。它们是由特定的工具链提供的扩展,因此,必须检查其文档中的差异。 < P>这是微软几年前作出的更为严格地解释C++标准的一部分。它表示全局名称空间中以下划线开头的所有名称都保留供实现使用。这意味着getch不是保留名称,但\u getch是保留名称 因此,Microsoft认为“此函数以及其他所有

在conio.h头文件中定义的两个函数之间有什么区别-

getch()和_getch()


脱毛有区别吗?还是因为更新的标准只是一个差异?

< P>这两个函数都是非标准的(即它们不在C++ ISO标准中)。它们是由特定的工具链提供的扩展,因此,必须检查其文档中的差异。

< P>这是微软几年前作出的更为严格地解释C++标准的一部分。它表示全局名称空间中以下划线开头的所有名称都保留供实现使用。这意味着
getch
不是保留名称,但
\u getch
是保留名称

因此,Microsoft认为“此函数以及其他所有POSIX函数都是由实现提供的。让我们通过在它们前面添加下划线来重命名它们,这样我们就可以将其保留在全局命名空间的“保留”部分中。这样,就不会与用户提供的函数发生名称冲突


你可以说这些都是善意的,或者说这只是破坏POSIX代码的恶意企图。我不知道他们的真正动机是什么,但最终的结果是,根据微软的说法,
getch
被弃用了,你应该用
\u getch
来代替。

+1
来解释什么样的pOSIX代码会被破坏吗?POSIX
getch()
诅咒的一部分,因此任何依赖
getch()的POSIX代码
无论如何都需要一个
curses
端口。17.4.3.1.2全局名称1某些名称和函数签名集始终保留给实现:-每个名称包含一个双下划线(\uuuuu)或以下划线开头,后跟一个大写字母(2.11)保留给实现以供任何使用。这不适用于gecth。@n.m.很公平。我不确定
getch
是否是POSIX规范的一部分,或者它是否来自其他库。我知道他们对所有POSIX函数都进行了这种处理,快速谷歌一下
getch
就提到了POSIX,所以我认为它是POSIX函数如果不是,那也不会改变什么,因为它们的重命名并不仅仅局限于POSIXnames@PaulC++标准是哪种版本?在N32 90下,我有“每个名字都以一个下划线开始的名字被保留给实现,作为全局命名空间中的一个名称。”(C++98规范中也有类似的措辞)