2010-09-13 30 views
1

我是新手,尤其是c和C++。c/C++中的VARNAME_T和VARNAME_P有什么区别

我经常看见VARNAME_P和VARNAME_T在C/C++。 这两者有什么区别?

在此先感谢

+0

你意味着什么字母'VARNAME_P',或者是'VARNAME'为任意数量的其他名称的占位符?你能给个例子吗?后缀'_t'通常表示一个类型,如'ptrdiff_t','size_t','time_t'。 – 2010-09-13 04:00:37

+0

我是说like,size_t,uint32_t – BobAlmond 2010-09-13 04:02:54

+1

什么,在任何答案中都没有提及** case-sensitivity **?我很失望。 – 2010-09-13 04:27:41

回答

1

你指的是产品型号命名约定,其中一种类型或指针类型已_t_p分别追加到它?如果是这样,就没有区别。如果你仔细想想,考虑到这些约定具有你决定赋予它们的任何意义,这是不可能的。例如,我可能会决定所有处理长度的变量都将以l_作为前缀。

4

他们大多只是名称约定。该语言本身定义了一些类型,如size_t,这是用于存储事物大小的类型,或者是用于存储指针之间差异的类型。

_p后缀是最有可能的指针类型,如:

typedef int * INT_P; 

,所以你可以取代所有:

int *xyz = NULL; 

线,:

INT_P xyz = NULL; 

我不曾经回想过在实际标准中看到_p后缀,因此这只是用户修改离子,矿没有什么不同,它是利用pt为前缀:

typedef struct { 
    char name[100]; 
    int age; 
} tPerson; 
char *pBuff = maloc (sizeof (tPerson)); 
5

按照惯例,_t是一个后缀,这意味着“类型”,所以任何类型可能有这样的后缀。 _p通常表示“指针”,因此它指示一种类型是指向给定类型的指针。

1

有没有像C/C没有这样的事情++。这些是两种不同的语言,可能有不同的命名约定。

标识符名称中的后缀_t意在表示该标识符是typedef。通常它们以某种适合您正在处理的具体平台的方式混淆了一些标准类型。

这些名称通常被保留下来:在C类标准定义了其中的一些,和POSIX标准的要求将通过该标准的扩展留作将来使用所有这样的名字。

因此,它是一个坏主意,在自己的代码,申报这样的标识符特别的东西,是不是typedef