C++ 流重定向

标签 c++ embedded

在嵌入式 C 中,我使用重定向到系统调用“_write”的 printf,它允许我重载 _write 并重定向到 Uart 或 Usb VCP。

现在在嵌入式 C++ 中,我想对 std 流 std::cout std::cin 做同样的事情。

电话通向哪里?调用 cout/cin 时我最终会在哪里?还有一个我可能会重载的系统调用吗?

printf("hi") --> _write()
std::cout << "hi" --> ????????????

因为我无法调试标准库调用,所以我不知道那里发生了什么。

如果有人有这方面的经验,请给我一些例子和提示。

最佳答案

大多数标准 C++ 库都是使用底层 C 库(无论如何它本身都是 C++ 库的子集)实现的。

C++ 库通常不需要 C 库的单独重定向层。

您不需要访问库源来演示这一点。您可以简单地在 _write 处放置一个断点(在您的情况下 - 该符号绝不是给定的),然后运行 ​​cout 代码来证明它是使用 _write 系统调用实现。

关于C++ 流重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49237275/

相关文章:

c - 在优化构建时,调试信息是否会从库中删除?

c++ - 为什么 std::make_tuple 将 std::reference_wrapper<X> 参数转换为 X&?

c++ - Windows 有默认的单词词典吗?

embedded - 如何将 ARM 代码用于实际设备 JTAG?可以用Arduino制作即兴JTAG吗?

project-management - 具有重大硬件更改的嵌入式项目的开发过程

c - 如何设置矩阵的基地址?

python - 有限嵌入式设备上的纪元秒到日期转换

c++ - 在 Linux Mint 上使用 CMake 找不到 boost

c++ - FFMPEG 错误 : Exactly one scaler algorithm must be chosen

C++ ifstream帮助(简单)