Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么getcwd()不是isoc++;顺从的 声明GETCWDE()已被否决,而应该使用ISO+C++兼容的GETCWD,这就提出了一个问题:什么使得GETCWDE()不符合ISO标准?< P>我知道GETCWD()从来没有成为ISO标准C++的一部分。getcwd()肯定不是,因为标准名称不会以下划线开头_C++_Iso - Fatal编程技术网

为什么getcwd()不是isoc++;顺从的 声明GETCWDE()已被否决,而应该使用ISO+C++兼容的GETCWD,这就提出了一个问题:什么使得GETCWDE()不符合ISO标准?< P>我知道GETCWD()从来没有成为ISO标准C++的一部分。getcwd()肯定不是,因为标准名称不会以下划线开头

为什么getcwd()不是isoc++;顺从的 声明GETCWDE()已被否决,而应该使用ISO+C++兼容的GETCWD,这就提出了一个问题:什么使得GETCWDE()不符合ISO标准?< P>我知道GETCWD()从来没有成为ISO标准C++的一部分。getcwd()肯定不是,因为标准名称不会以下划线开头,c++,iso,C++,Iso,实际上,MSDN文章链接到一个名为“强”>“直接”的HEMAN页。H,这不是标准的C++头文件。我觉得这篇文章似乎是假的> PG>到目前为止,我知道GETCWD()从来没有成为ISO标准C++的一部分。getcwd()肯定不是,因为标准名称不会以下划线开头 实际上,MSDN文章链接到一个名为“强”>“直接”的HEMAN页。H,这不是标准的C++头文件。我觉得这篇文章似乎是假的 标准中未指定的函数应以下划线作为前缀,表示它们是特定于供应商的扩展或遵守非ISO标准。因此,此处的“合规性”是指Micr

实际上,MSDN文章链接到一个名为“强”>“直接”的HEMAN页。H<强>,这不是标准的C++头文件。我觉得这篇文章似乎是假的

> PG>到目前为止,我知道GETCWD()从来没有成为ISO标准C++的一部分。getcwd()肯定不是,因为标准名称不会以下划线开头


实际上,MSDN文章链接到一个名为“强”>“直接”的HEMAN页。H<强>,这不是标准的C++头文件。我觉得这篇文章似乎是假的

标准中未指定的函数应以下划线作为前缀,表示它们是特定于供应商的扩展或遵守非ISO标准。因此,此处的“合规性”是指Microsoft在此特定函数的名称中添加下划线,因为它不是ISO标准的一部分。

标准中未指定的函数应以下划线作为前缀,以表示它们是供应商特定的扩展或遵守非ISO标准。因此,此处的“合规性”是指Microsoft在该特定函数的名称中添加下划线,因为它不是ISO标准的一部分。

要添加到Dan Olson的帖子中,请参见MSDN上的页面

Microsoft特定函数和全局变量的名称以一个下划线开头。这些名称只能在代码范围内本地重写。例如,当包含Microsoft运行时头文件时,仍然可以通过声明同名的局部变量在本地重写名为_open的Microsoft特定函数。但是,您不能将此名称用于自己的全局函数或全局变量


要添加到Dan Olson的帖子中:请参见MSDN页面

Microsoft特定函数和全局变量的名称以一个下划线开头。这些名称只能在代码范围内本地重写。例如,当包含Microsoft运行时头文件时,仍然可以通过声明同名的局部变量在本地重写名为_open的Microsoft特定函数。但是,您不能将此名称用于自己的全局函数或全局变量


正如其他人已经指出的,GETCWD不包括在ISO C++中,但它是IEEE STD 1003.1的一部分。


微软决定将一些最常用的POSIX函数包含在C标准库中(但是用下划线来前缀这些函数,以基本上阻止它们的使用)。

< P>正如其他人已经指出的,GETCWD不包括在ISOC++中,而是IEEE STD 1003.1的一部分。 微软已经决定将一些最常用的POSIX函数包含在他们的C标准库中(但在这些函数前面加下划线,从本质上来说,这不利于它们的使用)。

对此有一个明确的定义。对此的回答

我是那个在1983年坚持认为 C程序可用的名称可分为:

a)由实现为程序员的利益而定义的那些(如printf)
b)那些保留给程序员的(如foo)
c)保留给实现的那些(例如_unlink)

即使在那时,我们也知道“实施”过于单一-- 通常不止一个源提供实现的位-- 但那是当时我们能做的最好的了。标准C++ 已经引入了名称空间来提供帮助,但它们只实现了 他们所说目标的一小部分。(这就是当你 (一只纸老虎)

在这种情况下,Posix提供了一个类别(a)名称列表 (例如取消链接)您应该在 包括某些标题。因为C标准从 Unix与Posix的源代码相同,其中一些头文件 历史上的重叠。然而,编译器警告应该是 考虑支持的环境是否 是“纯”标准C++(柏拉图理想)或混合C/C++ + POSIX 环境微软目前帮助我们穷人的努力 程序员没有考虑到这一点。它坚持治疗 作为类别(b)名称取消链接,这是近视

是,GCC不会在严格的C模式下声明POSIX名称,至少(尽管它仍然是C++模式):

您必须通过使用特性测试宏或不通过任何特定标准,明确地告诉它您在混合C/Posix中操作。然后,它将默认为
gnu89
,这将假定一个混合环境(
man-feature\u-test\u-macros
)。很明显,MSVC没有这种可能性。

对此有一种解释。对此的回答

我是那个在1983年坚持认为 C程序可用的名称可分为:

a)由实现为程序员的利益而定义的那些(如printf)
b)那些保留给程序员的(如foo)
c)保留给实现的那些(例如_unlink)

即使在那时,我们也知道“实施”过于单一-- 通常不止一个源提供实现的位-- 但那是当时我们能做的最好的了。标准C++ 已经引入了名称空间来提供帮助,但它们只实现了 他们所说目标的一小部分。(这就是当你 (一只纸老虎)

在本例中,Posix提供了一个类别列表(
#include <stdio.h>

int main() {
    &fdopen;
    return 0;
}
test.c: In function 'main':
test.c:4: error: 'fdopen' undeclared (first use in this function)