运行库和全局命名空间 < p>我不认为您真正理解您使用的术语,但是C++标准库中的名称存在于STD命名空间中,所以答案是否定的。如果通过.h文件名包含它们,例如: #include <stdio.h> #包括

运行库和全局命名空间 < p>我不认为您真正理解您使用的术语,但是C++标准库中的名称存在于STD命名空间中,所以答案是否定的。如果通过.h文件名包含它们,例如: #include <stdio.h> #包括,c++,C++,如果你像这样包括他们: #include <cstdio> #包括 然后,这些名称同时存在于全局和std名称空间中 将对象放置在std名称空间中的原因并不是为了避免“名称空间污染”,这几乎不是一个值中立的术语,而是为了避免名称冲突 > P>我不认为您真正理解您使用的术语,但是C++标准库中的名称存在于STD命名空间中,所以答案是否定的。在C标准库中的头文件中的名称被放置在全局命名空间中,如果您通过.h文件名将它们包括在一起,例如: #include <stdio.h>

如果你像这样包括他们:

#include <cstdio>
#包括
然后,这些名称同时存在于全局和std名称空间中


将对象放置在std名称空间中的原因并不是为了避免“名称空间污染”,这几乎不是一个值中立的术语,而是为了避免名称冲突

> P>我不认为您真正理解您使用的术语,但是C++标准库中的名称存在于STD命名空间中,所以答案是否定的。在C标准库中的头文件中的名称被放置在全局命名空间中,如果您通过.h文件名将它们包括在一起,例如:

#include <stdio.h>
#包括
如果你像这样包括他们:

#include <cstdio>
#包括
然后,这些名称同时存在于全局和std名称空间中


将对象放置在std名称空间中的原因并不是为了避免“名称空间污染”,这几乎不是一个值中立的术语,而是为了避免名称冲突

大多数库都干净地放在名称空间
std:
——但是,为了向后兼容
C
,您可以选择“污染”全局名称空间,包括像
(在全局名称空间中放置许多名称)这样的旧标题,而不是像
这样的新标题(正确地使用
std:
名称空间)。

大多数库都干净地放在名称空间
std:
——但是,为了向后兼容
C
,您可以选择通过包含像
这样的旧标题来“污染”全局名称空间(这会在全局名称空间中放置大量名称)而不是像
(正确使用
std:
名称空间)这样正确的新标识符。

运行库需要使用保留标识符。如果没有名称空间限定,则必须以两个下划线开头:
\u start
,等等

你不允许使用保留的名字。图书馆不允许使用你的名字。如果其中一个跨越到另一个,那就是“污染”,这是非法的


<>基本上,C和C++的情况是相同的,除了其他答案,在C++中大多数标准库名称都有命名空间限定。

< P>运行库需要使用保留标识符。没有命名空间限定,这些必须从两个下划线开始:<代码> 你不允许使用保留的名字。图书馆不允许使用你的名字。如果其中一个跨越到另一个,那就是“污染”,这是非法的


本质上,C和C++的情况是相同的,除了其他答案指出,在C++中大多数标准库名称都有命名空间限定。

运行库似乎不在标准库内。@ Curia,请澄清您所询问的名称。C++标准没有指定运行库。C++命名空间是编译时对象,不能被运行时的任何“运行”所释放。运行库似乎不在标准库中。@ Curia,请澄清您所询问的名称。C++标准没有指定运行库。在C++命名空间中是编译时对象,不能被“修饰”。实际上,如果你包括cmath等人,大多数实现将名称放在两个名称空间中。如果你包括cmath等人,大多数实现将名称放在两个名称空间中。我指的是此处指定的运行时库:运行时库不是标准库,它用于实现离子处理,以及C++中的其他东西。我指的是运行时库,这里指定的是:运行库不是标准库,它用于实现异常处理,以及C++中的其他东西。