首页 > 其他分享 >typedef和#define

typedef和#define

时间:2023-12-03 11:44:57浏览次数:28  
标签:typedef INT a1 int 类型 define

typedef工具是一个高级数据特性,利用typedef可以为某一类型自定义名称(起别名)。这方面和#define类似,但二者有三处不同:
1、 与#define不同,typedef创建的符号名只受限于类型(只能作为类型),不能用于值。
2、 typedef由编译器解释,不是预处理器。
3、 在受限范围内,typedef比#define更加灵活。
在typedef和宏文本替换之间存在一个关键性的区别,正确思考这问题的方
法就是把typedef看成是一种彻底的“封装”类型——在声明它之后不能再往里增加别的东西。
① 可以使用其他类型说明符对宏类型名进行扩展,但对typedef所定义的类型名却不能这么做。如下所示:

#define INT int
Unsigned INT a; //合法
typedef long LONG;
unsigned LONG b; //非法 

② 在连续几个变量的声明中,用typedef定义的类型能够保证声明中所有的变量均为同一种类型,而用#define定义的类型则无法保证。如下所示:

#define P_INT int *
P_INT a1, a2;

在宏替换后,第二行变为:
Int * a1, a2;
a1是个int指针,而a2是个int型变量
如果是使用typedef,则不会出现这种情况。如下所示:
typedef char * P_CHAR;
P_CHAR b1, b2;
在这里b1和b2都是char
指针。

标签:typedef,INT,a1,int,类型,define
From: https://www.cnblogs.com/wangfeng-98/p/17872751.html

相关文章

  • 如何理解 SAP UI5 的 sap.ui.define 函数?
    我们在SAPUI5官网能查到sap.ui.define的详细文档:在一个JavaScript文件中,通常和建议的做法是在文件顶部有一个对sap.ui.define的调用。当通过其模块ID首次请求一个模块时,会根据ID和当前配置来确定对应的资源。该资源将被加载并执行,这将反过来执行顶级的sap.ui.defi......
  • TypeError: Cannot read properties of undefined (reading '$modal')
    原代码:handleFinish(row){this.$modal.confirm('确认录取学生编号为"'+row.stuCode+'"的成绩?').then(function(){finishStudentScore({id:row.id}).then((response)=>{if(response.code==......
  • 使用emqttd时执行emqttd console时无反应或者报错Node undefined not responding to p
    1.无反应:  2.报错:Nodeundefinednotrespondingtopings. 解决办法:路径不能有空格,最好用存英文的路径。......
  • 报错:undefined reference to `WinMain'
    报错:undefinedreferenceto`WinMain'错音是编译器找不到main()函数:可能缺少是main()函数,比如main拼写错误可能是main()函数不再全局命名空间中,注意main()函数必须置于默认命名空间(即全局命名空间)下......
  • 解决ls: relocation error: /lib64/libacl.so.1: symbol getxattr, version ATTR_1.0
    解决ls:relocationerror:/lib64/libacl.so.1:symbolgetxattr,versionATTR_1.0notdefinedinfilelibattr.so.1withlinktimereference参考:https://www.cnblogs.com/biohujun/p/17613372.html 这个问题是在我conda装了一个包之后就出现了,ls等最基础的命令没有办......
  • <Index onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< undefined > key=xxxx
    改了一下之前的程序,点开以后就出现了warn,初始加载页面是显示的然后切换到别的页面,就不显示了。 网上查了一下,有说是引用组件要驼峰,后来查了一下,不是这个原因。 想了一下是引入了一个对话框,然后就出现这种问题。究其原因:<template></template>下只能有一个root如果有多个......
  • C语言【自定义数据类型、typedef、动态内存分配】
    C语言【自定义数据类型、typedef、动态内存分配】一、自定义数据类型。​ 关于下面讲到的所有自定义数据类型(enum、struct、union),有一点要说的是:定义类型不是声明变量,做这步操作时不分配内存,也不能在定义类型时赋值(枚举那个不是赋值,是做一个限定,赋值时赋限定之外的值也不报错。)......
  • mysql5.0升级8.0完成后,服务器重启引发"#1449 - The user specified as a definer ('m
    遇到的问题:问题一:ERROR1449(HY000):Theuserspecifiedasadefiner('mysql.infoschema'@'localhost')doesnotexist异常原因:未知解决办法:验证指定的用户('mysql.infoschema'@'localhost')是否存在于mysql数据库中SELECTUserFROMmysql.userWH......
  • 宏#define用途
    c++中的宏#define用途宏的一些作用,包括但不限于这些定义一个变量、字符串、类型定义一个函数、条件表达式条件编译、调试信息,异常类定义结构体、命名空间定义模版、枚举、函数对象#define宏定义在C++中用于定义常量、函数、条件编译、字符串、条件表达式、变量、注释、调......
  • 结构体前面加typedef
    如果是C语言,那么在定义了一个结构体之后,在声明这个结构体变量的时候必须要在类型前加上struct比如structStudent{//声明结构体charname[20];//姓名intnum;//学号floatscore;//成绩};structStudentstu1;如果是C++......