typedef是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typedef是啥意思?相关的知识,希望对你有一定的参考价值。
参考技术Atypedef struct是定义一个标识符及关键字的别名,无具体含义。,它是语言编译过程的一部分,为了使用结构体方便。
例:typedef struct tagMyStruct MyStruct。
因此,MyStruct实际上相当于struct tagMyStruct,可以使用MyStruct varName来定义变量。
在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间。
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。
扩展资料:
typedef struct 结构名:
类型 变量名;
类型 变量名;
...
结构别名;
//结构别名:只是结构的标示符——结构体类型
在C语言中,struct不能包含函数。在C++中,对struct进行了扩展,可以包含函数。
typedef常用来定义关键字、冗长的类型的别名。 宏定义只是简单的字符串代换(原地扩展),而typedef则不是原地扩展,它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变 量的功能。
参考资料来源:百度百科—typedef
这个声明是啥 typedef void foo();意思是? [关闭]
【中文标题】这个声明是啥 typedef void foo();意思是? [关闭]【英文标题】:What does this declaration typedef void foo(); mean? [closed]这个声明是什么 typedef void foo();意思是? [关闭] 【发布时间】:2015-02-13 01:04:54 【问题描述】:我不明白typedef void interrupt_handler();
的含义。有人可以举一些例子来解释吗?
typedef void interrupt_handler();
【问题讨论】:
【参考方案1】:这意味着interrupt_handler
是函数的类型同义词,它返回void
并且不指定其参数(所谓的旧式声明)。请看下面的例子,其中foo_ptr
用作函数指针(这是不需要括号的特殊情况):
#include <stdio.h>
typedef void interrupt_handler();
void foo()
printf("foo\n");
int main(void)
void (*foo_ptr_ordinary)() = foo;
interrupt_handler *foo_ptr = foo; // no need for parantheses
foo_ptr_ordinary();
foo_ptr();
return 0;
【讨论】:
我有这个函数 void cpu_boot(uint cores, interrupt_handler bootfunc, uint serialno) 并且在参数 bootfunc 中我想传递以下参数:Task boot_task, int argl, void* args。任务类型为 typedef int (* Task)(int, void*);我该如何实施?类似包装函数的东西? @cmbasnett @LefterisSarantaris:我宁愿单独提出问题。不要忘记描述您已经尝试过的内容,解释您的问题并添加一些最小的示例。【参考方案2】:这是一个带有特定签名的function pointer 的typedef
声明(在本例中是一个带有void
返回且没有参数的函数)。
见What is a C++ delegate?(最佳答案,选项3)
【讨论】:
以上是关于typedef是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
typedef enum与typedef struct分别是啥意思
“typedef __u16 __bitwise __le16;”是啥意思?在Linux内核中是啥意思?