在C函数中传递数据类型信息

神学论证

我正在实现队列数据结构,并使用void *指针使其通用。但是我很棘手,如果像在C ++中有模板那样在C中甚至有可能,我应该如何传递数据类型信息以获取特定数据类型的队列。

  typedef struct queue{void * data;
      struct queue * link;
  }Queue; 

  Queue * getQueue(pass the type){
      Queue * head = (Queue *)malloc(sizeof(Queue));
      //cast by type the data of queue and return created queue node.
      return head;
  }

使用malloc()C函数创建的队列。以上代码创建了队列的头。然后其他功能将根据插入请求创建后续节点。

这是错误的,但是我应该如何传递数据类型信息以将其正确投射,还是必须使用_Generic宏,或者是否存在通过C中其他某种机制来获取类型信息的功能。

玛丽安

您的案例无需任何技巧。无需理会任何种类的通用性。您正在实现一个存储空指针的队列。空队列将由NULL表示。函数addElement将向队列添加一个空指针。就这些。该实现可能如下所示:

typedef struct queue {
  void * data;
  struct queue * link;
} Queue; 

Queue * getQueue() {return(NULL);}

void addElement(Queue **qq, void *data) {
  // find last ptr
  for(; *qq != NULL; qq = &((*qq)->link) ) ;
  *qq = malloc(sizeof(Queue));
  (*qq)->data = data;
  (*qq)->link = NULL;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中将原始数据类型传递给函数

来自分类Dev

将数据类型传递给 C++ 类构造函数

来自分类Dev

将数据类型作为参数传递给函数

来自分类Dev

将集合传递给函数时无效的数据类型

来自分类Dev

传递类的数据类型

来自分类Dev

C中的数据类型提升或降级

来自分类Dev

在C(GCC)中定义数据类型

来自分类Dev

C中参数的默认数据类型?

来自分类Dev

c中的unsigned int数据类型

来自分类Dev

C ++中的符号数据类型

来自分类Dev

如何检查C ++中的数据类型?

来自分类Dev

在C中扫描不同的数据类型

来自分类Dev

C中的数据类型混合

来自分类Dev

在C(GCC)中定义数据类型

来自分类Dev

C中的数据类型提升或降级

来自分类Dev

C ++中的符号数据类型

来自分类Dev

Java中的C数据类型

来自分类Dev

当在 c 中对不同的输入数据类型使用相同的函数时,是否可以在被调用函数中检索参数的数据类型?

来自分类Dev

什么是函数的数据类型:函数或对象?在JavaScript中

来自分类Dev

在Java中传递通配符通用数据类型的通用

来自分类Dev

C ++在函数声明中错误两个或多个数据类型

来自分类Dev

Haskell:通过在C函数中创建代数数据类型进行封送处理

来自分类Dev

在C ++中,如何编写函数使其可以在任何数据类型上工作?

来自分类Dev

如何在C用户定义函数中返回“结构”数据类型?

来自分类Dev

字节数据类型函数在C中返回什么

来自分类Dev

在C中声明函数时是否需要数据类型标识符?

来自分类Dev

char []和int之间的int函数中的C冲突数据类型

来自分类Dev

C ++在函数的声明中错误两个或多个数据类型

来自分类Dev

在C函数原型中,在返回数据类型之前添加结构名称

Related 相关文章

热门标签

归档