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

时间:2014-12-17 14:00:30

标签: c++ namespaces

这是一个有效的代码,即使 max ,一个全局变量和 max(int,int)命名空间内的一个函数之间存在冲突STD

为什么没有错误?

using namespace std;
int max;
int main()
{
  int c;
  c=max;
  //c=max(5,3);
}

1 个答案:

答案 0 :(得分:6)

您还没有包含<algorithm>或可能声明std::max的任何其他标头,因此没有冲突。您的程序只声明一个名为max的实体。

如果我包含该标题,由于含糊不清,我得到预期的错误:

test.cpp: In function ‘int main()’:
test.cpp:8:5: error: reference to ‘max’ is ambiguous
   c=max;

解决方案是不将std转储到全局命名空间中,从而使命名空间的整个目的无效。