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只改变返回值

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

  • 相关阅读:
    条件
    循环
    列表
    字典
    集合
    公共操作
    函数-2
    函数-1
    函数加强
    文件操作
  • 原文地址:https://www.cnblogs.com/cdwodm/p/2964223.html
Copyright © 2011-2022 走看看