首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中给库标头的函数命名

如何在C中给库标头的函数命名
EN

Stack Overflow用户
提问于 2011-11-03 16:53:53
回答 5查看 237关注 0票数 0

我试图用纯c语言编写一个泛型库,只是一些数据结构,如堆栈、队列.

在我的stack.h给这些函数命名时。我对此有疑问。

  1. 我可以使用这样的名称,例如" init“作为函数名来插入堆栈。会有什么问题吗?
  2. 我知道,也许还有其他的功能,只是做其他的事情,并有相同的名字"init“。然后程序会被混淆,特别是当我都包含不同的init的头时。

3.我知道我的忧虑可能是不必要的,但我仍然想知道原则。

任何帮助都是非常感谢的,谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-03 17:00:21

  1. init()可能是可以的(如果您将库作为实际库包含到其他库中,而不是在其中编译它的源代码),但最好使用stack_init()之类的东西,并在库的函数前面加上stack_或queue_等。
  2. 使用您的库的程序可能会混淆,这取决于所包含的库的顺序,参见#1。

就原则而言,链接器(无论如何,在Linux上)将查找符号,如何找到这些符号是有顺序的。有关更多信息,您可以查看dlsym()的手册页,特别是RTLD_NEXT。

票数 0
EN

Stack Overflow用户

发布于 2011-11-03 16:58:36

我可以使用这样的名称,例如" init“作为函数名来插入堆栈。会有什么问题吗?

是的,如果其他人想要一个名为init的函数。

我知道我的担心可能是不必要的,但我仍然想知道原则。

您的担心是必要的,这(缺乏名称空间)是C中的一个严重问题。

  • 输出尽可能少的功能。如果可以的话,把一切都做好( static )
  • 为函数名加上前缀。例如,不要使用init,而是尝试stack_init
票数 2
EN

Stack Overflow用户

发布于 2011-11-03 16:58:57

C中没有名称空间,所以通常在每个标识符前加上库的名称或昵称。

代码语言:javascript
复制
init();

变成了

代码语言:javascript
复制
fancy_lib_init();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7998770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档