C项目避免命名冲突
我正在努力寻找有关中型C库项目的函数命名约定的实用建议。我的库项目分为几个模块和带有各自标题的子模块,并且松散地遵循OO风格(所有函数均以某个结构作为第一个参数,而没有全局变量等)。它奠定了我们这样的东西: MyLib - Foo - foo.h - foo_internal.h - some_foo_action.c - another_foo_action.c - Baz - baz.h - some_baz_action.c - Bar - bar.h - bar_internal.h - some_bar_action.c 一般来说,功能远远太大,(例如)棒some_foo_action,并another_foo_action在一个foo.c实现文件,使大多数功能静态的,收工。 在构建库时,我可以处理去除内部(“模块私有”)符号的问题,以避免用户与其客户端程序发生冲突,但是问题是如何在库中命名符号?到目前为止,我一直在做: struct MyLibFoo; void MyLibFooSomeAction(MyLibFoo *foo, ...); struct MyLibBar; void MyLibBarAnAction(MyLibBar *bar, ...); // Submodule struct MyLibFooBaz; void MyLibFooBazAnotherAction(MyLibFooBaz *baz, ...); 但是,我最终得到了疯狂的长符号名(比示例长得多)。如果我没有在名称前添加“假名称空间”,则模块的内部符号名称会发生冲突。 注意:我不在乎骆驼案/帕斯卡案等,只是名字本身。