【C语言】typedef(自定义数据类型)与#define(宏定义)用法比较

您所在的位置:网站首页 TypeDef是什么数据类型 【C语言】typedef(自定义数据类型)与#define(宏定义)用法比较

【C语言】typedef(自定义数据类型)与#define(宏定义)用法比较

2024-07-16 15:04| 来源: 网络整理| 查看: 265

  不管是在C语言还是在C++中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef和#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了。

     1.宏定义(#define)

     宏定义又称为宏代换、宏替换,简称“宏”。

     格式:#define 标识符 字符串

     其中的标识符就是所谓的符号常量,也成为“宏名”。

     预处理(预编译)工作也叫作宏展开:将宏名替换为字符串。掌握“宏”概念的关键是“换”,一切以换为前提。

      2.自定义数据类型(typedef)

     定义一种类型的别名,而不只是简单的宏替换。可以用typedef可以解决同时声明多个指针型变量的问题。

     请看下面的例子:

​​#define INT1 int typedef int INT2; #define PINT int * typedef int * SINT;​​

     从形式上看它们相似,但在实际使用中却不相同。

     下面分别用INT1,INT2,PINT,SINT定义变量就可以看出它们的区别:

INT1 a,b; INT2 c,d; PINT e,f; SINT g,h;

     在经过宏替换后变为:

int a,b; INT2 c,d; int * e,f; SINT g,h;

     在上面的变量中,变量a和b为整型变量,变量c和d也为整型变量;在这里我们看不出宏定义和数据类型定义的区别。而变量e为整型指针变量,变量f为整型变量;变量g和h则均为整型指针变量,因为SINT是一个类型说明符。由这个例子可见,宏定义虽然也可表示数据类型,但毕竟是作为字符替换。在使用时要分外小心,以避出错。

     



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3