gcc 4.4.4 c89
我只是想知道在创建类型时是否应该遵循任何标准。
例如:
typedef struct date
{
} date_t;
我也看到人们投入这样的资本:
typedef struct date
{
} Date;
或变量
typedef unsigned int Age;
或者
typedef unsigned int age_t;
是否应该遵循任何标准。就个人而言,我更喜欢使用_t进行后期修复。
非常感谢任何建议,
答案 0 :(得分:30)
如果您正在使用遵循POSIX标准的平台,您应该知道以_t
结尾的任何标识符都保留给POSIX定义的类型,因此不建议对您自己的类型遵循相同的约定。 / p>
答案 1 :(得分:9)
您可以只使用
typedef struct toto toto;
struct toto
(标签)和。{
typedef
名称toto
(标识符)
是在不同的C“名称范围”所以
它们是兼容的,但它们最终指向相同的类型。typedef
。toto
即可
有时候会很困惑。答案 2 :(得分:6)
这大部分归结为个人偏好,关键是要保持一致(或者如果你有公司惯例,请使用它)。以下文章有一些命名指南:
http://www.montefiore.ulg.ac.be/~piater/Cours/Coding-Style/
请注意,它会切换'_t'部分:
typedef struct node_t {
void *content;
struct node_t *next;
} Node;
typedef enum season_t { SPRING, SUMMER, FALL, WINTER } Season;
此前有一个关于C命名约定的讨论:
答案 3 :(得分:4)
风格是一种非常个人化且非常主观的东西,我强烈建议您只使用您喜欢的任何内容,或者您组织中使用的任何约定。
答案 4 :(得分:3)
按照其他人为您的项目所做的事情,以便一切都保持一致。否则它们在技术上都是可以接受的。
答案 5 :(得分:3)
我认为没有任何“标准”命名约定。实际上,它们在项目之间(以及其他语言,如C ++或Java)之间的差异很大,我个人采用了所有语言的camelCase。
我总是通过typedef
定义我的结构,所以我只使用我给它的任何名称(这也是Win32 API的功能)。如果我需要一个自引用结构,我在_
前加上原始结构的名称:
typedef struct _Node {
_Node *next;
} Node;
答案 6 :(得分:1)
通常,大多数语言允许将SentenceCase用于非标准化的类或类型。我发现这是最好的做法,并且在允许它的语言中,还使用命名空间或模块来防止冲突。在没有(例如C)的语言中,必要时的前缀永远不会误入歧途。要使用多语言示例来处理我目前正在处理的事情:
C: typedef uint32_t CpfsMode;
C++: namespace Cpfs { typedef uint32_t Mode; }
Python: cpfs.Mode = int