zoukankan      html  css  js  c++  java
  • C语音,关于可变参数的宏定义

     1 typedef char * va_list; // TC中定义为void*
     2 
     3 //为了满足需要内存对齐的系统
     4 #define _INTSIZEOF(n)    ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 
     5 
     6 //ap指向第一个变参的位置,即将第一个变参的地址赋予ap
     7 #define va_start(ap,v)    ( ap = (va_list)&v + _INTSIZEOF(v) ) 
     8 
     9 // 获取变参的具体内容,t为变参的类型,如有多个参数,则通过移动ap的指针来获得变参的地址,从而获得内容
    10 #define va_arg(ap,t)    ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) ) 
    11 
    12 //清空va_list,即结束变参的获取
    13 #define va_end(ap) ( ap = (va_list)0 )
  • 相关阅读:
    【xinsir】githook之precommit分享
    node进程一些信号的意义
    ES6篇
    Webpack4篇
    Node篇
    Vuex篇
    WebStorage篇
    HTML5篇
    html5语义化标签大全
    emmet语法
  • 原文地址:https://www.cnblogs.com/utank/p/6952870.html
Copyright © 2011-2022 走看看