头文件是如何实现的,比如一个 string.h 文件[关闭]

Posted

技术标签:

【中文标题】头文件是如何实现的,比如一个 string.h 文件[关闭]【英文标题】:how is an header file implemented say an string.h file [closed] 【发布时间】:2014-10-15 09:55:58 【问题描述】:

在c++中,string.h头文件是否只包含字符串函数的decleration?

如果为真,那么它们在哪里实现。

【问题讨论】:

在解决方案文件(外部依赖项)中搜索 string.h,您实际上将导航到头文件 我发现它只包含所需功能的原型的清除 您还需要什么?执行?它在 string.cpp 中实现 在一个string.cpp 文件中,该文件被编译为一个库(say x)。现在您的链接器将您的代码与x 链接起来,以允许您使用在string.h 中声明的函数 那么,U 的意思是一个默认的 string.cpp,文件存在并实现了所有需要的定义? 【参考方案1】:

头文件通常只包含方法的原型声明,只是为了满足最初的编译器检查。实现文件已经编译成二进制形式并作为库文件分发。它们在链接过程中链接到您的程序。

如果你学过 C,你会记得你曾经在 main() 方法之上添加自定义方法的原型声明(定义在 main() 函数下面)。如果没有,您将收到编译器错误。头文件包含这些在相关 cpp/c 文件中定义的方法的协议声明,因此初始检查不会停止编译。以这种方式编写还有助于隐藏软件的实现部分,但其他用户可以通过查看协议声明来根据需要使用此方法。

您可以获取更多关于编译链接过程的信息here。

回答你的问题

在 c++ 中,string.h 头文件是否只包含 字符串函数?

是的,它们只包含声明

如果为真,那么它们在哪里实现。

相关的 C++ 文件以二进制格式编译和分发为库。在 Unix 系统上,它位于标准 C 库 (libc) 中

【讨论】:

所以,所有相关的 cpp/c 文件都已经预编译好了!!,请给我一个澄清 谢谢你,真的很有帮助【参考方案2】:

string.cpp

^嗯,这是唯一的答案!

【讨论】:

你确定不是string.cc :P 显然我不是 :P :P :D ***.com/questions/1545080/… @Nishant ...或至少string.c?【参考方案3】:

您可以通过man string 找到它,您可以在其中找到它是标准C 库 的一部分,即libc 库。

【讨论】:

Thnku,所以你的意思是所有标准函数,它在链接过程中引用 libc 库 在某些情况下确实如此。这些标准功能将在程序启动期间链接。 谢谢你,它怎么知道字符串函数必须与字符串库文件链接,数学函数必须与数学文件链接,它是否基于(决定)头文件?

以上是关于头文件是如何实现的,比如一个 string.h 文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C语言头文件,conio.h,windows.h,string.h,math.h各有啥用?

头文件带和不带.h的区别

string.h是啥头文件

C语言里面输入命令的头文件是啥啊

C\C++关于string.h头文件和string类

C语言中,#include "string.h"是啥意思?