zoukankan      html  css  js  c++  java
  • typedef 与 #define 的区别

    (1)#define可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。例如:

    #define INTERGE int
    unsigned INTERGE n;  //没问题
    typedef int INTERGE;
    unsigned INTERGE n;  //错误,不能在 INTERGE 前面添加 unsigned

    (2) 在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。例如:

    #define PTR_INT int *
    PTR_INT p1, p2;        //p1、p2 类型不相同,宏展开后变为int *p1, p2;
    typedef int * PTR_INT
    PTR_INT p1, p2;        //p1、p2 类型相同,它们都是指向 int 类型的指针。


    与 #define 不同,typedef 具有以下三个特点:

    • 1.typedef 给出的符号名称仅限于对类型,而不是对值。
    • 2.typedef 的解释由编译器,而不是预处理器执行。并不是简单的文本替换。
    • 3.虽然范围有限,但是在其受限范围内 typedef 比 #define 灵活。
     
  • 相关阅读:
    随机数测试
    往xml中更新节点
    Spring学习之代理
    SpringMVC基本配置
    Hibernate映射一对一关联关系
    成员变量的定义与使用
    面向对象三大特性
    请用心“品尝”网络电视精灵
    汽车租赁系统
    JSP 甜点
  • 原文地址:https://www.cnblogs.com/feige1314/p/9102021.html
Copyright © 2011-2022 走看看