• C语言学习笔记 函数式宏


      不学C光搞PHP不知道还有这种东西-函数式宏,宏前面学过了Macro,编译器在对代码进行编译时会对宏表达式进行展开替换,这样宏就起到了全局变量的作用,这里函数式宏也是类似,编译器进行编译时按函数表达是进行替换展开,实现了函数的功能,不过这种函数式宏和自定义函数还是有区别的。

    利用函数式宏计算两个数的平方和

    #include <stdio.h>

    #define squares_sum(x,y) {x*x+y*y}      //这里就是定义函数式宏,但是这里不用返回,也不用给形参指定数据类型 比如不用指明int x,int y

    int main(void)

    {

      int a=3,b=4;

      int sqsum;

      sqsum=squares_sum(a,b); //编译器解析到这里会替换展开,这和函数调用不一样。

      printf(sqsum);

      return 0;

    }

    //有些使用频率高且简短的函数可以考虑用函数式宏。

    函数式宏有副作用,用的时候要小心,比如如果函数式宏里有;,调用的地方用的是if else 的简写模式式就会出错。

    例如:

      if(1)

        函数式宏(a);     //展开时如果函数式宏的语句里有;就会造成编译错误,if else的简写模式被;破坏了

      else

        函数式宏(b);

  • 相关阅读:
    Jmeter安装与环境部署
    BVT & BAT (版本验证测试和版本验收测试)
    测试计划(Test Plan)
    小米8se从miui12降级刷机手记
    网络传输---HttpURLConnection
    mybatis 中 foreach collection的三种用法
    XStream--java对象与xml形式文件相互转换
    idea问题总结记录
    ssh框架配置过程
    ssm框架配置过程
  • 原文地址:https://www.cnblogs.com/luckylihuizhou/p/6423967.html
Copyright © 2020-2023  润新知