您可以(但不应该)完全不加规划地使用无系统命名约定,但这会给客户带来不便;他们没有简单的方法知道哪些名称可在其自己的程序中使用。例如,我曾经遇到过一种库,它为内部使用定义了一个未记录的函数,称为error()。该名称与任何已记录的外部命名空间都不匹配。而当时,我的一个标准错误报告函数也被称为error(),尽管现在更名为err_error()。这意味着我不能使用我的标准错误报告函数与那个库。结果是如果不得不使用该库,我不得不费很大劲才行。因此,您不应该像那样不经意地处理名称。在公共头文件中,您应该使用一个(或很少的)系统前缀,并将其记录下来。通常,您会选择类似PFX这样的前缀,并使用它:- 枚举常量以PFX_开头。 - 宏以PFX_开头。 - 函数以pfx_开头。 - 全局变量(您没有这样的变量,对吧)以pfx_开头。 - 类型名称和结构或联合标记以pfx_开头。 - 可以从其自己的源文件外部看到的私有变量和函数具有系统前缀(可能再次是pfx_,或者最后一个p是私有的,或者是pfx[A-Z],因此私有名称是驼峰式但以pfx开头)。只有严格的文件作用域变量或函数(没有外部连接)不受这些规则的限制,但即使在这种情况下,使用命名约定也是明智的(因此,如果某个函数以后需要被两个文件使用,则无需修改先前将函数标记为静态的代码中的调用)。这样,您可以简单地记录以PFX_或pfx_开头的名称专为您的库保留。用户仍然可以使用具有相同前缀的名称(您不能阻止他们),但他们这样做是自己承担风险,因为更新库可能会添加保留名称。他们可以远离您的名称,因为您已经记录了它们,并且文档(相对而言)易于理解。请注意,C标准和POSIX标准都制定了保留名称的规则。但是,保留POSIX和C名称的规则比单一前缀复杂得多。它们也更加广泛。例如,如果包含任何POSIX头,则POSIX将所有以_t结尾的名称保留供用作类型名称。