C中结构的构造函数

标签 c struct initialization

给定:

struct objStruct {
    int id;
    int value;
};

typedef struct objStruct Object;

是否有分配和初始化对象的快捷方式,类似于 C++ 构造函数?
它甚至可以是预处理器宏。任何使代码更短且更易读的东西:

Object *newObj = malloc(sizeof(Object));
// successful allocation test snipped
newObj->id = id++;
newObj->value = myValue;

最佳答案

在 C 语言中,我通常会创建一个具有构造函数风格的函数来执行此操作。例如(为简洁起见省略了错误检查)

Object* Object_new(int id, int value) { 
  Object* p = malloc(sizeof(Object));
  p->id = id;
  p->value = value;
  return p;
}

...
Object* p1 = Object_new(id++, myValue);

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

相关文章:

c - 我向我的 IP 地址发送 ICMP 重定向数据包,但我的 IP 路由表未更改

c - FIONBIO 的 Winsocks 定义的实际数字是多少?

c++ - 仅将结构的 std::vector 成员传递给函数 (C++)

c++ - 使用新结构的聚合初始化是否有效?

c++ - SSE 半负载 (_mm_loadh_pi/_mm_loadl_pi) 发出警告

c - 使用 ‘-Wcast-qual’ 选项检查编译

c++ - 如何直接获取 rand() 序列中的第 n 个数字而不必调用 rand() n 次?

arrays - 从 ColdFusion 中的 Struct/Array 访问和设置变量

c - 在 C 中,将指向结构的指针值发送到函数时返回 float 会更改结构的值

c++ - 初始化模板数组