这是一个有效的代码即使是有冲突最大,全局变量和MAX(INT,INT) ,内部功能空间std.
为什么没有错误?
using namespace std;
int max;
int main()
{
int c;
c=max;
//c=max(5,3);
}
Run Code Online (Sandbox Code Playgroud)
您没有包含<algorithm>或可能声明的任何其他标头std::max,因此没有冲突.您的程序只声明一个名为的实体max.
如果我包含该标题,由于歧义,我得到预期的错误:
test.cpp: In function ‘int main()’:
test.cpp:8:5: error: reference to ‘max’ is ambiguous
c=max;
Run Code Online (Sandbox Code Playgroud)
解决方案是不要转储std到全局命名空间,从而使命名空间的整个目的无效.