您可以(但不应该)做的事情是完全粗心大意,根本不使用系统的命名约定.这"有效",但让您的客户感到不舒服; 他们没有简单的方法知道他们可以在自己的程序中使用哪些名称.(我遇到了一个库,它为其内部使用定义了一个未记录的函数,该函数被调用error()
.该名称与外部记录的命名空间的任何部分都不匹配.当时,我自己的一个标准错误报告函数也被调用error()
- 尽管它现在err_error()
;这意味着我无法使用我自己的标准错误报告功能与该库.结果是我没有使用该库,如果我没有;它是太麻烦使用.)
所以,你不应该那样.你应该小心你公开的名字.
您的公共标题应使用一个(或极少数)系统前缀,这些前缀已记录在案.通常,您选择PFX等前缀,并使用:
PFX_
.PFX_
.pfx_
.pfx_
.pfx_
.pfx_
再次,或者可能pfxp_
是最后一个p
用于私有的,或者可能pfx[A-Z]
是私有名称是驼峰式的,但开头pfx
).只有严格文件范围的变量或函数(没有外部链接)不受这些规则的约束,但即便如此,建议使用命名约定(因此,如果某个函数需要稍后由两个文件使用,那么你就不要我必须修改以前函数的代码中的调用static
.
这样,您可以简单地记录您的库开始PFX_
或pfx_
保留的名称.用户仍然可以使用具有相同前缀的名称(您无法阻止它们),但他们这样做会自行承担风险,因为升级到库可能会添加保留的名称.他们可以很好地清楚你的名字,因为你已经记录了它们,并且因为文档(相对)易于理解.
请注意,C标准和POSIX标准都规定了保留名称的规则.但是,保留的POSIX和C名称的规则要比单个前缀复杂得多.他们也在扫地.例如,_t
如果包含任何POSIX标头,POSIX将保留所有以用作类型名称结尾的名称.