zoukankan      html  css  js  c++  java
  • **宏 **本质上是形参的替换
    **无参宏 **: 也叫宏常量,还叫宏指令

    //不会占存储空间,是最传统的方法,如果定义全局变量会多占用4个字节的存储空间
    也可以增加可读性
    #define SIZE 10 (后面没有;)  
    

    带参宏 :宏函数和函数的区别

    1、运行时间不同(宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已)
    2、不需要考虑类型(宏进行定义时不会考虑参数的类型)
    3、参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作

    可以用变量赋值
    带参宏的使用注意事项
    1、宏函数中的参数一定要用括号括起来,以防止替换后的优先级问题
    #define MIN1(x,y) ((x)<(y)?(x):(y))

    2、宏函数中的整个表达式也需要用括号括起来,以防止替换后的优先级问题
    #define LOWER(ch) ((ch>='A'&&ch<='Z')?(ch+32):ch)

    3、同函数中有多条语句时,应写成复合语句(加上{},让变量变成局部变量),以防止变量的重定义问题

    #define ASD(data , size)  {for (int i = 0; i<size; i++) { 
       printf("%d ",data[i]);}printf("
    ");
    }
    

    4、调用宏函数时,不要使用++,--作为实参;++运算时,宏只进行替换不进行运算,避免重复计算++或—-

     a = 3;
     b = 4;
     int result = MAX1(++a, ++b);
    NSLog(@"a = %d b = %d result = %d",a,b,result);
    **特殊:**
    #define PRINT(x,y) printf(#x" = %d,"#y"= %d
    ",x,y);
      //#把a放到""内,然后删除自己
    
  • 相关阅读:
    [01] 异常的概念和处理
    [03] 节点流和处理流
    [02] 输入/输出流 和 字节/字符流
    [01] File类
    Apache的https协议配置
    Apache的虚拟主机配置
    Apahce的虚拟用户认证及server-status页
    Apache配置日志功能
    Apache脚本路径别名(CGI接口)
    Apache配置站点根目录、用户目录及页面访问属性
  • 原文地址:https://www.cnblogs.com/xulinmei/p/7444063.html
Copyright © 2011-2022 走看看