有没有一种方法可以为使用结构定义的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中完成所有这些工作。