'std::cout' 声明中的明确限定

explicit qualification in declaration of 'std::cout'

这个问题对我来说真的很奇怪。

代码越简单越好:

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

它只是 helloworld,因为它是从标准 cpp 项目创建的。 我确定它成功了。但是过了一段时间(真的不记得发生了什么变化......)我得到了一个错误:

error: explicit qualification in declaration of 'std::cout'
   extern ostream std::cout;  /// Linked to standard output

不在项目中但在 iostream 中的有趣的事情

有帮助吗? ^_^

.新信息: 我正在构建 boost 库,对于许多文件,我遇到了同样的错误:'std::cout'

声明中的显式限定

我用的是 MinGW

想到的唯一解释是:

  1. 有人修改标准header(不小心?),替换原来的

    extern ostream cout;
    

    不正确

    extern ostream std::cout;
    
  2. 有人将名为 cout 的宏定义为 std::cout,很可能是在编译器的命令行中。例如

    -Dcout=std::cout
    

    例如参见http://coliru.stacked-crooked.com/a/bc5be8c7d99fed53