zoukankan      html  css  js  c++  java
  • 可变参数函数宏的实现

    1 #define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) )  
    2 #define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) ) //第一个可选参数地址  
    3 #define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) //下一个参数地址  

    上面定义的三个宏在可变函数参数的时候用的到

    下面解释下第三个

    这里注意下括号ap += _INTSIZEOF(t))这里改变ap

    这里((ap += _INTSIZEOF(t)) - _INTSIZEOF(t))不改变ap只改变返回值

    具体的例子这里不再列举,这点理解了,其他应该不难

  • 相关阅读:
    十一作业
    11.20
    11.13 第十二次、
    11.13 第十一次、
    11.06第十次、
    11.06第九次、
    10.30
    10.23
    10.16
    10.9
  • 原文地址:https://www.cnblogs.com/cdwodm/p/2964223.html
Copyright © 2011-2022 走看看