gpt4 book ai didi

c++ - 我编译的标准库中的 std::endl 在哪里?

转载 作者:行者123 更新时间:2023-11-30 03:34:49 25 4
gpt4 key购买 nike

我正在尝试通过错位名称从我的 C++ 标准库中查找函数。我在 macOS 上,所以使用 nm 命令我可以检查 dylib:

nm -g /usr/local/lib/libc++.dylib
nm -g /usr/local/lib/libc++abi.dylib

在输出中,我可以找到 std::cout 的错位名称:

0000000000079ec0 S __ZNSt3__14coutE
0000000000079f60 S __ZNSt3__15wcoutE
etc...

但是,我没有找到 std::endl 的任何条目。

有趣的是,我的 LLVM IR 解释器也找不到 std::endl,尽管 std::cout 工作正常:

LLVM ERROR: Program used external function     
'__ZNSt3__14endlIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_' which could not be resolved!

在我的系统上我应该在哪里找到 std::endl

最佳答案

正如 YSC 提到的,std::endl 是一个函数(可能是内联的),它所做的只是输出结束行 \n 字符,然后调用 冲洗

http://en.cppreference.com/w/cpp/io/manip/endl

看起来 libcxx 有隐藏 endl: https://github.com/llvm-mirror/libcxx/blob/master/include/ostream#L999

虽然 flush 没有这样的属性:https://github.com/llvm-mirror/libcxx/blob/master/include/ostream#L938

关于c++ - 我编译的标准库中的 std::endl 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41747597/

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