gpt4 book ai didi

c++ - 使用 cout 输出 cerr

转载 作者:可可西里 更新时间:2023-11-01 17:34:29 26 4
gpt4 key购买 nike

我遇到了一段基本上执行以下操作的代码:

#include <iostream>

using namespace std;
int main()
{
cout << cerr << " Hi.";

return 0;
}

输出:

0x601088 Hi.

首先,为什么有人会做'cout << cerr',这是没有意义的。其次,上面的输出是什么意思?

值得一提的是,在我的机器上,上面的代码编译和执行没有错误。

然而,在运行相同版本的 gcc 5.4.0 的不同机器(服务器 ssh 连接)上的更复杂的代码(做与上面相同的事情)在执行 make 时会产生此错误(为清楚起见缩短):

error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream<char>}’ and ‘std::ostream {aka std::basic_ostream<char>}’)
cout << cerr << "DB: Field " + e.table + "[" + e.index + "]." + e.field

对此有什么想法吗?

最佳答案

直到 c++11,std::basic_ios 提供了一个 implicit conversion to void* .此代码无法使用 c++11 或更高版本进行编译。你基本上有这个,它用旧版本的 gcc 编译:

#include <iostream>
int main()
{
void * x = std::cerr;
std::cout << x << " Hi.";

return 0;
}

关于c++ - 使用 cout 输出 cerr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47835651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com