【问题标题】:How should I extend standard functionality, like string functions in C?我应该如何扩展标准功能,例如 C 中的字符串函数?
【发布时间】:2017-07-12 17:01:45
【问题描述】:

如果我正在编写自己的字符串函数,第一反应是创建一个 string.h 头文件来包含这些函数的原型。当然,已经有一个 string.h 文件,它是 C 标准库集的一部分。这个库有 strcat 和 strlen 等函数。

如果我要添加自己的字符串处理函数,本质上是扩展标准库中已有的内容,那么正确的方法是什么?我应该只创建 mystring.h 并在其中包含 string.h,还是让我的东西与现有的 string.h 完全分开?如果我不想使用 string.h,我可以只实现自己的 string.h,还是这是个坏主意?

请注意,我没有重写 strcat,我编写了不同的函数,这些函数将添加到现有函数中,而不是替换它们。

【问题讨论】:

  • 编写任何库的方式相同。从标准库中包含您需要的任何内容。它与这个库正在做什么的细节无关。

标签: c header


【解决方案1】:

如果您要创建一组新函数,则需要使用这些函数的声明创建自己的头文件。

另一方面,如果您要替换一些现有的字符串函数,即名称和参数相同,那么您不需要自己的头文件,因为系统头文件适用于这些函数职能。而且由于标准库函数是弱符号,你可以正常链接这些替换函数,它们会覆盖系统函数。

【讨论】:

  • 可以肯定的是,具有标准库函数名称的函数在技术上是未定义的行为。
  • @EOF 不是 UB。我也不推荐它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多