头文件是如何实现的,比如一个 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 文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章