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

    在C语言中,typedef和define都可以设置变量的别名,但是typedef被视为一种彻底的封装,为类型引入一个别名,声明之后不能再往里面加入别的东西,宏则不然。

    1. define可以进行扩展但是typedef不行(note1)

    #define peach int
    unsigned peach; //OK
    
    typedef banana int
    unsigned banana; //NOK
    

    2. define在连续定义中定义与typedef不同

    #define apple char*
    apple val1, val2; //val1 is char*, val2 is char
    
    typedef apple char*
    apple val1, val2; // val1 and val2 are all char*
    

    Note1: 根据C++ primer p104, 所谓的不行并不是说会引起编译错误,而是结果不符合常规: 

    typedef char* cstring
    
    extern const cstring cstr; //equal to char* const cstr, NOT constr char* cstr
    

      

  • 相关阅读:
    @codeforces
    @总结
    @总结
    @codeforces
    @topcoder
    @codeforces
    @codeforces
    @codeforces
    @codeforces
    @codeforces
  • 原文地址:https://www.cnblogs.com/dracohan/p/2972194.html
Copyright © 2011-2022 走看看