Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 库定义位于哪里?_C++_C - Fatal编程技术网

C++ 库定义位于哪里?

C++ 库定义位于哪里?,c++,c,C++,C,有人能告诉我在哪里可以找到源文件,标准库的定义在哪里吗? 例如,其中是包含string.h中原型函数定义的文件string.c?最重要的是,它存在?它全部处于编译状态,其中一些可能由asm优化。您需要找到编译器的源代码才能查看定义,这些定义都处于已编译状态,其中一些可能由asm优化。您需要找到编译器的源代码,才能查看GCC的定义,这是一种开源,您可以从镜像站点下载libstdc++库的源代码。下载中包含std库的源代码。请记住,不同的供应商将有不同的实现,因此提供的链接仅仅是GCC的开发人员决定

有人能告诉我在哪里可以找到源文件,标准库的定义在哪里吗?

例如,其中是包含
string.h
中原型函数定义的文件
string.c
?最重要的是,它存在?

它全部处于编译状态,其中一些可能由asm优化。您需要找到编译器的源代码才能查看定义,这些定义都处于已编译状态,其中一些可能由asm优化。您需要找到编译器的源代码,才能查看GCC的定义,这是一种开源,您可以从镜像站点下载libstdc++库的源代码。下载中包含std库的源代码。请记住,不同的供应商将有不同的实现,因此提供的链接仅仅是GCC的开发人员决定如何实现GCC的标准库,这是开源的,您可以从他们的镜像站点下载libstdc++库的源代码。下载中包含std库的源代码。请记住,不同的供应商将有不同的实现,因此提供的链接只是GCC开发人员决定如何实现标准库的方式,您可能不会喜欢这样

C++标准没有具体说明标准库中实际执行的任何内容。它表示声明内容的位置,但仅限于它对文件命名的程度,您必须

#include
,才能将名称引入。例如,标准规定:

std::string

是用于
基本字符串
typedef
,为了将该
typedef
引入到您的程序中,您必须
\include
。实际上,它并没有说
基本字符串
字符串
是在
中定义的,它甚至没有说
在硬盘上的位置。事实上,它通常不在现实世界的
中。在我的实现中,(MSVC10)
string
在另一个文件
中定义,它如下所示:

typedef basic_string<char, char_traits<char>, allocator<char> >
    string;
typedef基本字符串
一串
有用吗

还有另外一个方面。标准库中的很多东西是模板的东西,比如字符串,因此,由于模板在C++中工作,这些工具必须是所谓的“包含库”,但不是标准库中的所有东西都是由模板组成的。p> 考虑
sprintf
。该标准规定,该声明由
#include
提供,但与
字符串一样,它甚至不在声明的地方。而且
sprintf
不是一个模板。实现在通常被称为CRT的C运行库中。这是DLL和LIB的集合(无论如何,在MSVC10中),您的程序链接到这些DLL和LIB以运行类似于
sprintf
的代码


现在坏消息是CRT中的组件通常没有源代码。您不知道sprintf的
sprintf
是在哪里实现的,您无法查看源代码。在这些情况下,除了在MicroSoft找到一份工作,您几乎没有其他选择,因此您可以查看源代码。:)

你可能不会喜欢这个

C++标准没有具体说明标准库中实际执行的任何内容。它表示声明内容的位置,但仅限于它对文件命名的程度,您必须

#include
,才能将名称引入。例如,标准规定:

std::string

是用于
基本字符串
typedef
,为了将该
typedef
引入到您的程序中,您必须
\include
。实际上,它并没有说
基本字符串
字符串
是在
中定义的,它甚至没有说
在硬盘上的位置。事实上,它通常不在现实世界的
中。在我的实现中,(MSVC10)
string
在另一个文件
中定义,它如下所示:

typedef basic_string<char, char_traits<char>, allocator<char> >
    string;
typedef基本字符串
一串
有用吗

还有另外一个方面。标准库中的很多东西是模板的东西,比如字符串,因此,由于模板在C++中工作,这些工具必须是所谓的“包含库”,但不是标准库中的所有东西都是由模板组成的。p> 考虑
sprintf
。该标准规定,该声明由
#include
提供,但与
字符串一样,它甚至不在声明的地方。而且
sprintf
不是一个模板。实现在通常被称为CRT的C运行库中。这是DLL和LIB的集合(无论如何,在MSVC10中),您的程序链接到这些DLL和LIB以运行类似于
sprintf
的代码


现在坏消息是CRT中的组件通常没有源代码。您不知道sprintf的
sprintf
是在哪里实现的,您无法查看源代码。在这些情况下,除了在MicroSoft找到一份工作,您几乎没有其他选择,因此您可以查看源代码。:)

glibc源代码是在我使用GNU GCC编译器时编写的。但是我宁愿避免下载我的编译器的全部源代码(也因为我认为我不太了解其中的大部分)。那么,有人能把
的实现与我联系起来吗?如果您使用pastebin,它也是完美的。glibc源代码位于我使用GNU GCC编译器。但是我宁愿避免下载我的编译器的全部源代码(也因为我认为我不太了解其中的大部分)。那么,有人能把
的实现与我联系起来吗?如果你使用pastebin也很完美。它不是