gpt4 book ai didi

c - C中的默认构造函数

转载 作者:太空狗 更新时间:2023-10-29 16:23:54 25 4
gpt4 key购买 nike

有没有办法为使用结构定义的 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 中完成这一切的。

关于c - C中的默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/537244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com