如何在C和C ++程序中标记类型?


12

在我的这个答案中,我_t在类型的末尾使用了它,但这种情况最多是有争议的。这是我在当前项目中使用的做法。

typedef struct {
    int x;
    int y;
} point_t;

旨在与来自stddef.hlike size_t或C的C类型一致ptrdiff_t。但是,根据我的问题中的某些评论,_t后缀似乎是为POSIX保留的。我应该用什么代替_t?还是应该继续使用_t

这个问题是针对C和C ++的。如果这些语言有不同的约定,请随时回答。


2
一种常见的约定是具有LookLikeThis的类名。那时,您甚至都不需要后缀。(这在Java,.net等中更为常见。但是它也可以在C ++中使用。)
cHao 2014年

1
最终,这是匈牙利符号的一种形式。这场讨论是无止境的。我现在反对它,并采取cHao的解决方案。为什么?因为我在所有内容上都使用了匈牙利记法大约4年,所以决定不使用它就去做一个项目,一点也不错过。而且没有浪费时间。所以我完全放弃了它,因为它显然对我没有任何价值。我再也没有回头。
stijn 2014年

1
请参阅此问题以获取保留的标识符(包括_tstackoverflow.com/a/228797/14065
Martin York

Answers:


16

在C和C ++社区内部,关于命名类型尚无共识。

尽管_t后缀确实是POSIX保留的,但有些人会主张也将_t后缀用于您自己的类型,而另一些人会坚决主张您不应冒险冒用POSIX重复名称的诱惑。

其他命名约定建议为类型(例如C或)使用前缀T


16

我发现后缀相当丑陋,因此应避免使用_t等。一个很好的选择是使用大写字母开头的类型名称,因此Point在上面的示例中。


3
而且我发现与标准C类型具有不同的样式非常好,因此阅读代码可以轻松找到客户端程序中的内容以及API的内容
Nikko

1
也是我最喜欢的技术。类型具有首字母大写。所有其他标识符都不是类型,因此很容易看到。
马丁·约克

我一直认为它看起来也很丑。很高兴看到别人同意我的看法。
syb0rg 2014年

我只将PascalCase用于指针类型(因为像C#和Java这样的语言,其中PascalCase表示类,即对数据的引用),但是我知道您来自哪里。
yyny

1

这取决于你。除非与保留字有冲突,否则您最好走。但是,请考虑以下情形:您在一家公司工作,并且多个人正在访问相同的代码库,并且您的代码到达了一个不了解您的习惯的人。然后他/她可以假定其是保留类型,尤其是在您编写类似point_t的内容。因此,请保持简单,例如,point比point_t更简单。而且,如果您想在其中添加一些内容,请添加姓名缩写。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.