如何查看我从 c++ 标准库中调用了哪些函数?

How can I see what functions I call from a c++ standard library?

本文关键字:调用 函数 看我 何查 c++ 标准      更新时间:2023-10-16

假设我使用c ++ stl列表,我声明它并用它做一些操作。如何查看程序正在调用的 stl 列表模板中的哪些特定函数。例如,如果我有以下代码:

std::list<std::string> someList;
someList = someOtherList;

如何准确打印程序调用的 stl 列表中的哪个构造函数?

您的问题有两个答案:

  • 你不能。
  • 你仍然可以做一点。

c++标准只定义了STL应该做什么,而不是如何做。根据定义,你应该不可能从外面说出发生了什么。

因此,它是实现定义的库实际执行的操作。它可以只创建你的列表,或者它可以编写一个Java Web服务器来生成c ++列表,执行它并返回结果。你分不清其中的区别。

但是,不要害怕。仍然有两种可能性可以获得您想要的一些信息。首先,您可以购买 c++ 标准并查看 STL 的示例实现。(幸运的是,您实际上可以在cpp首选项免费获得大部分内容。或者,可以使用调试器在执行时单步执行代码,以查看调用了哪些函数。

但请注意,第一个答案不仅仅是为了咯咯笑。调试方法可能会遇到严重问题。一些 STL 实现不关心可读性。他们使用任何丑陋的c ++,这是最快的,因此可能很难理解。此外,一些库只提供编译的二进制文件和头文件,因此在查看代码时没有运气。

不过,请尝试一下。也许你会知道你想要什么。如果没有,您仍会通过正确使用调试器来学习。:D