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

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

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

【问题讨论】:

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

标签: c++ c


【解决方案1】:

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

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

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

回答你的问题

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

是的,它们只包含声明

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

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

【讨论】:

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

string.cpp

^嗯,这是唯一的答案!

【讨论】:

【解决方案3】:

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

【讨论】:

  • Thnku,所以你的意思是所有标准函数,它在链接过程中引用 libc 库
  • 在某些情况下确实如此。这些标准功能将在程序启动期间链接。
  • 谢谢你,它怎么知道字符串函数必须与字符串库文件链接,数学函数必须与数学文件链接,它是否基于(决定)头文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 2021-09-15
  • 2011-02-19
相关资源
最近更新 更多