强制标准名称空间的命名空间范围
Forcing Namespace Scope for Standard Namespace
我有一个快速的问题。有没有办法迫使标准名称空间具有std::
示波器预选赛?类似abs
,什么不;所有std
功能都必须定义其范围。
我不是任何地方的using namespace std
,也不是我的using std::abs
或类似的东西。可能重要的是要说我包括Windows.h
,我认为这可能是其中一些未指示的功能来自。
标准不禁止其他名称空间具有名为 abs
的函数,仅仅是因为在 std
namnespace中有名为 abs
的函数。std
名称空间中定义的所有其他功能都是如此。
如果您想确定使用std::abs
。而不是任何其他版本的abs
,然后一定要使用std::abs
。然后,是否有其他版本是否有其他版本的abs
在windows.h
标头文件中定义。
呼叫abs
而不是std::abs
您只是使用C
C 中的规则是,#include <cmath>
将abs
的声明放在名称空间std
中,并且IS 允许的也将abs
的声明放在Global namespace。<<<<<<<</strong>。/p>
C 中的另一个规则是#include <math.h>
将abs
的声明放置在全局名称空间中,并且IS 允许也将abs
的声明放在命名空间std
中。
所以,不,您不能假设#include <cmath>
不会将abs
放入全局名称空间。
此规则的原因,而不是#include <cmath>
仅在std
中放置名称的"明显"的原因是,如果C 实施者也无法控制C标头,则后一个规则可能令人讨厌。在这种情况下,C 标头必须对所有C功能都具有重复的声明,并且C eSters的任何更改都必须通过C 标头进行,这会产生后勤的噩梦。
- 命名空间范围内的外部 - GCC vs clang vs msvc
- 具有命名空间范围的名称的 C++ 内部链接
- GCC 和非命名空间范围内的显式专用化
- 是否将命名空间范围文件本地 (.cpp) 常量放在匿名命名空间中
- Visual C:命名空间范围错误或晦涩功能?
- 命名空间范围问题
- 无法在命名空间范围内分配变量
- 非命名空间范围内的显式专用化不会在 GCC 中编译
- 如何处理警告 C4177:#pragma 'float_control' 只能在全局范围或命名空间范围内使用
- 为什么类型特征不适用于命名空间范围内的类型?
- 强制标准名称空间的命名空间范围
- 为什么我应该使用extern关键字来声明命名空间范围中的变量
- 关于友元函数定义和命名空间范围
- BOOST_STATIC_ASSERT的命名空间范围
- 为什么命名空间中的某些函数可以在没有命名空间范围前缀的情况下访问
- 在 cpp 文件中命名空间范围内"Private"变量
- 正在使用命名空间范围
- 强制名称查找以考虑命名空间范围
- 为什么语句不能出现在命名空间范围内
- 为什么不允许将类成员定义的' static '关键字放在命名空间范围内?