zoukankan      html  css  js  c++  java
  • 第六章 预处理器

    宏就是文字展开,实际中能够展开写出来发现错误



    6.1 不能忽视宏定义中的空格
    6.2 宏并非函数
      宏定义一个函数时,
    1、要把每一个參数用括号括起来
    2、同一时候也要把整个表达式括起来。
    3、要确保宏中的參数没有副作用
         #define  max(a,b) ((a)>(b)?

    (a):(b))

        max(big,x[i++]),这时++有可能被计算两次,产生了副作用。
    宏有可能由于自增减操作产生副作用。也有可能产生很庞大的表达式。

    消除if else的副作用:
    #define assert(e)
                 ((void)((e)||_assert_error(__FILE__,__LINE__)))

    6.4 宏并非类型定义
        #define T1 struct foo *
        typedef struct foo *T2

        T1 a,b;   //声明被扩展为struct foo *a,b;  b不是指针 。
        T2 a,b;

  • 相关阅读:
    Red and Black POJ
    Catch That Cow HDU
    Lotus and Horticulture HDU
    进击的绿色
    北京办护照
    女码农真诚征gg
    bitset
    long long
    cnblogs latex公式
    2050 Programming Competition (CCPC)
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6785231.html
Copyright © 2011-2022 走看看