gpt4 book ai didi

c++ - cout是在iostream中声明的,但是在哪里定义的呢?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:00 24 4
gpt4 key购买 nike

当我试图查看 cout 的定义时,我进入了 iostream 文件,它被声明为,

extern _CRTDATA2 ostream cout;

那么它是在哪里定义的呢?因为 extern 只是声明而不是定义。

最佳答案

全局符号在您与应用程序链接的运行时库中定义。例如,在 gcc 中,您传递编译器选项 -lstdc++,它将您的应用程序与 libstdc++.a 库链接。这就是所有此类符号所在的位置。

不过,这是特定于您的编译器/运行时库版本的,并且会有所不同。 Microsoft Visual C++ 的行为可能不同,但思想是相同的:符号位于 C++ 编译器随附的预编译库中。

使用 GNU 你可以输入:

nm -g libstdc++.a

查看库中的符号。输出可能如下所示(在许多其他行中):

ios_init.o:
U _ZSt3cin
globals_io.o:
0000000000000000 D _ZSt3cin
0000000000000000 D _ZSt4cerr
0000000000000000 D _ZSt4clog
0000000000000000 D _ZSt4cout
0000000000000000 D _ZSt4wcin
0000000000000000 D _ZSt5wcerr
0000000000000000 D _ZSt5wclog
0000000000000000 D _ZSt5wcout

关于c++ - cout是在iostream中声明的,但是在哪里定义的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772732/

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