有没有一种方法可以为使用结构定义的C用户类型提供某种默认构造函数(如C++)?

我已经有一个可以像快速初始化程序一样工作的宏(例如pthread_mutex的宏),但是我想知道是否可以在声明中填充结构的某些(或全部)字段。

例如,对于pthread_mutex示例,我想

pthread_mutex_t my_mutex;

具有与...相同的效果
pthread_mutex_t my_mutex = PTHREAD_MUTEX_INITIALIZER;

最佳答案

您可以创建带有指向结构的指针的初始化函数。这是惯例。

还具有创建结构并对其进行初始化的功能(如工厂)-因此,永远不会在“客户端”代码中“未初始化”该结构。当然-假设人们遵循惯例并使用“构造函数” /工厂...

可怕的伪代码,在malloc或free上没有错误检查

somestruct* somestruct_factory(/* per haps some initializer agrs? */)
{
  malloc some stuff
  fill in some stuff
  return pointer to malloced stuff
}


void somestruct_destructor(somestruct*)
{
  do cleanup stuff and also free pointer
  free(somestruct);
}

可能有人会来解释一些早期的C++预处理器/编译器如何在C中完成所有这些工作。

10-08 16:45