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

     

    typedef 在表现上有时候类似于 #define,但它和宏替换之间存在一个关键性的区别。正确思考这个问题的方法就是把 typedef 看成一种彻底的“封装”类型,声明之后不能再往里面增加别的东西。

    1) 可以使用其他类型说明符对宏类型名进行扩展,但对 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;

    经过宏替换以后,第二行变为:

    int *p1, p2;

    这使得 p1、p2 成为不同的类型:p1 是指向 int 类型的指针,p2 是 int 类型。

    相反,在下面的代码中:

    typedef int * PTR_INT
    PTR_INT p1, p2;

    p1、p2 类型相同,它们都是指向 int 类型的指针。

    天涯犹在,不诉薄凉。
  • 相关阅读:
    WPF基础之内容控件
    WPF基础之路由事件
    WPF基础分享之布局
    JMeter操作手册
    Jmeter安装和配置
    UI自动化--Web Driver小结
    对于自动化测试框架的总结
    UI自动化--selenium webdriver
    postman断言
    接口测试工具---postman的基本使用
  • 原文地址:https://www.cnblogs.com/Knight02/p/14110601.html
Copyright © 2011-2022 走看看