首页 > 其他分享 >typedef和define

typedef和define

时间:2023-04-05 20:12:58浏览次数:34  
标签:typedef fn1 void func define 指针

(一)typedef/define的基本概念

1.typedef

typedef int BOOL;
#define TRUE 1
#define FALSE 0

定义好之后,就可以像使用基本类型数据一样使用它了,如下面的代码所示:

BOOL bflag=TRUE;

2.与define的区别

 typedef 是在编译过程中被解析的,而#define是在编译之前的预处理时被破解的;#define只是对所定义的别名的简单替换,而typedef可以做到#define能做到的所有事情,而且可以做得更好

(二)typedef void (*T) (void *)

typedef void (*T)  (void * );定义了一个指向函数的指针T, 其 返回值  void 类型,参数也是后面的(void *) 接下来我们就可以直接使用 T 来定义这种 指针变量 ,比如:

T fn1; //等价于void fn1 (void *);
使用:void func(void *); //声明函数
T fn1; //定义变量
fn1=func; //赋值
(*fn1)(); //执行

对于typedef void(*T)(void *),我们进行一层层的剖析

首先写成 void(*T)() 可以看出 T是一个指针,是一个指向返回值为void ,参数为空的类型的函数指针

在加上(void *) 为 void(*T)(void *) 就变成了一个指向 返回值为void,参数为void *类型的指针

在加上上typedef ,加上后,T就不再是一个函数指针了,它代表着一种类型,这种类型可以定义一个 指向 返回值为void,参数为void *类型的指针

比如:

T t;
void func(void *);
t=func

 

标签:typedef,fn1,void,func,define,指针
From: https://www.cnblogs.com/imreW/p/17290747.html

相关文章

  • cramfs-1.1/mkcramfs.c:446: undefined reference to `minor'
    在编译cramfs-1.1时报如下错误:/usr/bin/ld:/tmp/ccMb5KDC.o:infunction`print_node':/root/cramfs-1.1/mkcramfs.c:446:undefinedreferenceto`minor'/usr/bin/ld:/root/cramfs-1.1/mkcramfs.c:446:undefinedreferenceto`major'collect2:error:ldr......
  • 【转】typedef的用法
    目录一、typedef的四种用法1.定义类型别名2.typedefstruct3.定义和平台无关的数据类型4.为复杂的声明顶一个简单别名二、如何理解复杂声明和定义三、右左法则四、用typedef简化复杂的声明和定义内容与参考资料基本一致,稍微修改了一点参考资料上存在的错误一、typedef的四种......
  • undefined symbol问题的查找、定位与解决方法
    今天被客户测出来一个问题:程序执行中报错,报错内容如下XXXX:symbollookuperror:/home/....../libpdfium.so:undefinedsymbol:CRYPT_MD5Generate报错分析:    这个问题表明是符号未定义的问题,而且直接定位于产品链接的第三方动态库libpdfium.so中,于是从libpdfium.so中......
  • 5.函数6.数组7.操作符8.常见关键字9.#define定义的常量和宏
    在我们学习的数学里面,函数的概念例子比如f(x)=2*x+1;  f(x,y)=x+y;在c语言也是同样的样子比如,我举例一条要相加的例子#definr_#include<stdio.h>intAdd(intx,inty)//int是他的返回类型是个整形,所以要加int//这就是一个函数add是自己创建的一个函数名,括号里面叫做函数的......
  • 【webpack】TypeError: Cannot read property 'tap' of undefined
    前言项目里使用webpack的代码混淆工具webpack-obfuscator,当打包代码时,出现如下报错:TypeError:Cannotreadproperty'tap'ofundefined原因项目的webpack版是4.x,而webpack-obfuscator的版本是3.x解决方法查阅资料在该https://nodejs7.com/2021/11/27/797.html文......
  • ADS "is an instance of undefined model"仿真报错
    前情提要我遇到的问题如下所示:原理图上直接拖了工艺库里的东西来搭,之后报错如下。解决办法我内网外网搜了很多,都说要加一个include的控件。但是他们举的例子几乎都是同一个,而且我用的这个工艺库也没有很明显的带有include字样的元件,而我的工艺是老师发给我的,不是网上可以下载......
  • defineExporse vue3中一个由子组件导出数据,让父组件调用的方法。
    子组件<scriptsetup>import{ref,reactive}from'vue'constisFlag=ref(false)constdata=reactive({name:'tom',age:18})//把数据导出defineExpose({data,isFlag})&......
  • 第二十二篇 vue - 深入组件 - 异步组件 - defineAsyncComponent
    基本用法defineAsyncComponent在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载相关组件。Vue提供了defineAsyncComponent方法来实现此功能import{defineAsyncComponent}from'vue'constAsyncComp=defineAsyncComponent(()=>{returnn......
  • 微信小程序i18n文件夹新增语言文件报:module is not defined
    背景:微信开发者工具的版本:1.06.2303060Stable 解决步骤:1.首先需要排除的是代码逻辑层面没有问题,对应要require的js文件也存在。2.升级微信开发者工具到最新版本3.打开详情=》本地设置,把“将JS编译成ES5”的去掉勾选后再次选择4.重新打开项目......
  • Uncaught ReferenceError: bobj is not defined
    创建好的水晶报表,报表没有生成。查看html代码,数据库的数据已经获取...按F12:出现如标题错误。看到此异常,想起来,是因为做少了一件事,即是需要把:C:\inetpub\wwwroot\的as......