C语言中构造函数和析构函数的命名约定

fre*_*low 9 c constructor destructor naming-conventions

假设我有一个struct list,我想提供一个"构造函数"和一个"析构函数"函数.我该如何命名呢?

void list__init(struct list * self);
void list__construct(struct list * self);
void list__create(struct list * self);
...

void list__done(struct list * self);
void list__destruct(struct list * self);
void list__destroy(struct list * self);
...
Run Code Online (Sandbox Code Playgroud)

是否存在在现实世界中占主导地位的既定命名约定?

小智 8

没有普遍接受的公约.

当然,C++在这个问题上影响了人们的观点.

就个人而言,我在函数执行内存分配时使用new(),如果不执行则使用init(),如果发生重新分配则使用delete(),否则使用cleanup().


apm*_*ell 8

巧舌如簧/ GTK人使用的创建惯例_new_free内存分配的构造函数和析构函数和_init_destroy非内存分配构造函数和析构函数.

pthread库似乎大多遵循的惯例_init_destroy非内存分配者和_create内存分配.

X11使用XOpenFooXCloseFoo.

C库本身使用的free是用于非内存分配像glob_t和的结构清理wordexp_t.

所以,我猜答案是否定的,但肯定有很多人在某些项目中选择了特定的符号.


Chr*_*oph 5

我正在使用以下约定:

  • 内存分配通过..._alloc()
  • 初始化通过..._init()
  • 通过组合分配和初始化..._create()
  • 通过释放相关资源..._discard()
  • ..._dealloc()通过或释放内存..._free()
  • 通过联合释放资源和内存..._destroy()