int max,变量和int max(int,int)之间没有冲突,是c ++中的一个函数

sha*_*kim 0 c++ namespaces

这是一个有效的代码即使是有冲突最大,全局变量和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)

Mik*_*our 6

您没有包含<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到全局命名空间,从而使命名空间的整个目的无效.