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

      + 宏主要是用于定义常量及书写复杂的内容;typedef 主要定义类型别名;
      + 宏替换发生在预处理阶段,属于文本插入替换;typedef 是编译的一部分;
      + 宏不检查类型; typedef 会检查数据类型;
      + 宏不是语句,不在结尾处加分号; typedef 是语句,要加分号标识结束;
      + 注意对指针的操作,typedef char *p_char 和 define p_char char* 差别巨大
     
    #include <iostream>
    using namespace std;
     
    int main(int argc,char** argv)
    {
        #define INT_PTR int* //不加分号,前为替代类型
        #define MAX 5*5+8
        typedef int* int_ptr; //加分号,后为替代类型
     
        INT_PTR a,b;
        int_ptr c,d;//int_ptr变成了int指针类型的别名
        int* e,f;
        int g = MAX*MAX;
     
        //使用RTTI的typeid运算符的name()操作显示类型
        cout<<"a is :"<<typeid(a).name()<<endl;
        cout<<"b is :"<<typeid(b).name()<<endl;//非指针
        cout<<"c is :"<<typeid(c).name()<<endl;
        cout<<"d is :"<<typeid(d).name()<<endl;
        cout<<"e is :"<<typeid(e).name()<<endl;//非指针
        cout<<"f is :"<<typeid(f).name()<<endl;
        cout<<"g is :"<<g<<endl;
        cin.get();
        return 0;
    }
  • 相关阅读:
    BigDecimal用法详解
    Spring IOC的配置使用
    Spring IOC容器基本原理
    Spring IOC基础
    Spring基础
    Spring概述
    win7+jdk环境变量配置
    订单状态
    项目经理与项目管理整理
    top命令按内存和cpu排序
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/14634573.html
Copyright © 2011-2022 走看看