c - 在 C 中命名类型时使用什么样式

标签 c naming-conventions

根据 this stack overflow answer ,类型名称上的“_t”后缀在 C 中保留。当使用 typedef 创建新的不透明类型时,我习惯于在名称中有某种指示这是一种类型。通常我会使用类似 hashmap_t 的东西,但现在我需要别的东西。

C 中的类型是否有任何标准的命名方案?在其他语言中,像 Hashmap 这样使用 CapsCase 很常见,但我看到的很多 C 代码根本不使用大写。 CapsCase 也可以很好地与库前缀配合使用,例如 XYHashmap

那么在 C 中命名类型是否有通用的规则或标准?

最佳答案

是的,如果您包含任何 POSIX header ,POSIX 会保留以 _t 结尾的名称,因此建议您在理论上远离这些 header 。我从事的项目在过去二十年左右的时间里与此类名称发生过两三次冲突。您可以通过使用公司前缀(例如您公司的 TLA 和下划线)或使用大小写混合的名称(以及 _t 后缀)来最大程度地降低冲突风险;我见过的所有碰撞都是简短且全小写的(dec_tloc_t、...)。

除了系统提供(和系统保留)的_t 后缀外,没有特定的广泛使用的约定。其中一种混合大小写系统(camelCase 或 InitialCaps)运行良好。系统前缀也很有效 - 更好的图书馆往往会注意这些。

如果您决定使用小写字母和 _t 后缀,请确保您使用的名称足够长,并认真检查 POSIX 标准、您使用的主要平台以及您使用的任何平台认为您可以继续努力避免不必要的冲突。当您向客户发布一些名称 example_t 然后发现在某些新平台上存在冲突时,最糟糕的问题就来了。然后你必须考虑让客户更改他们的代码,他们总是不愿意这样做。最好预先避免问题。

关于c - 在 C 中命名类型时使用什么样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1990797/

相关文章:

.net - .NET 中的方法名称可以以 Get 开头吗

C编程: Dynamic malloc in another function

c - 通过CMD复制时系统找不到指定的文件

c - 使用 C 无法读取 4 字节整数 (Int32) 文件

java - 最佳实践 : best database naming convention for JPA?

java - 没有域关联的 java 包名称的约定是什么?

c - 如何将一个简单的客户端服务器 TCP 程序转换为非阻塞程序

c++ - C、C++ : Shared libraries: Are single functions or complete libraries loaded into memory?

php - 有人使用index.html吗?

lisp - 为什么连字符在 LISP 的符号名称中是约定俗成的?