c++ - 如何查看C++中的标准库函数?

标签 c++ function

比如我想看函数toupper()的代码,了解它是如何工作的,有什么办法吗?我搜索并打开了 string.h 库,但没有找到任何东西。

最佳答案

从严格的语言角度来看,您无法“看到”标准函数的代码,因为 C++ 语言标准只定义了函数的原型(prototype)和行为,而没有定义它们的实现方式。

其实从严格的语言角度来看,像toupper这样的标准函数甚至不需要源代码,因为有一个标准的头文件,比如 <string.h>甚至不必是文件!

当然,在实践中,您可能永远不会遇到标准头文件不是文件的C++实现,因为文件只是头文件的自然而简单的实现。这意味着在实践中,对于标题 <string.h> ,实际上在您的计算机上某处有一个名为“string.h”的 C++ 源文件。 只需找到并打开即可。

I have searched and opened string.h library, but didn't find anything.

那你还不够仔细。提示:该文件很可能包含一个或多个其他头文件。

请注意,如果您实际查找了 toupper , 该函数不在 <string.h> 中反正。找<ctype.h>反而。 cppreference.com 是一个很好的在线引用,可以告诉您哪些 header 包含哪些函数。

http://en.cppreference.com/w/c/string/byte/toupper

同样,这并不意味着您的编译器的相应头文件直接包含该函数,而是可能直接或间接包含包含该函数的其他文件。


无论如何,注意您将在编译器的头文件中看到的内容。它通常比您想象的要复杂得多,而且更重要的是,它经常会使用不允许在您自己的代码中使用的结构;毕竟,这些文件中的代码是编译器实现的内部代码,并且编译器有很多你没有的特权,例如使用其他禁止的标识符,如 _STD_BEGIN。 .还期待很多完全不标准的#pragma s 和其他不可携带的东西。

另一件需要牢记的重要事情是,您不应该深入研究函数的实现来了解它的作用。在编写糟糕的软件中,即界面困惑且没有文档的软件(在现实世界中随处可见),不幸的是,如果您可以访问源代码,您就必须这样做。

但 C++ 标准函数有完善的文档记录,并且除了一些有争议的异常(exception)情况外,还具有设计良好的接口(interface)。查看它们在您的系统上的实现可能很有趣,也很有教育意义,有时甚至是调试所必需的,但不要让这种可能性阻止您学习两项重要的软件工程技能:

  1. 阅读文档。
  2. 针对接口(interface)而非实现进行编程。

关于c++ - 如何查看C++中的标准库函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31626364/

相关文章:

c++ - 函数原型(prototype)作用域示例

mysql - 查找从具有 group by 函数的 sql 查询生成的列的平均值

r - 如何在包内的函数中提供非 R 文件?

c++ - "Merge" vector 指针

c++ - 如何正确返回 unique_ptr 的集合

android - V8 独立应用程序仅在发布签名的 APK 时死于 SIGILL

c++ - 将 lambda 与运算符组合

c++ - 如何在表达式编译错误时将概念评估为 false

Javascript/Node.js : How to define a local variable as part of arguments in a function call?

java - Java 中的 Objective-C powf() 等效函数