zoukankan      html  css  js  c++  java
  • C语言变长參数的认识以及宏实现

    1.认识

    变长參数是C语言的特殊參数形式。比如例如以下函数声明:

    int printf(const char *format, ....);

    如此的声明表明,printf函数除了第一个參数类型为const char*之外,其后能够追加随意数量、随意类型的參数。

    printf的实现,粗略地举个样例。

    如果lastarg是变长參数函数的最后一个具名參数(比如printf里的format),那么在函数内部定义类型的va_list的变量:

    va_list ap;

    该变量以后将会依次指向各个可变參数。

    ap必须用宏va_start初始化一次,使其指向第一个不定參数,当中lastarg必须是函数的最后一个具名參数。

    va_start(ap, lastarg);

    此后,能够使用va_arg宏来获取当前不定參数的值,并依据当前不定參数的类型将指针移向下一个參数(假如已其其类型为type):

    type current = va_arg(ap, type);

    在函数结束前。必须用宏va_end来清理现场。

    变长參数的实现得益于C语言默认的cdecl调用惯例的自右向左压栈传递方式,个中细节不作详述。

    接下来用宏来实现变长參数。

    2.宏实现

  • 相关阅读:
    JQuery 点击子控件事件,不会触发父控件的事件
    JQuery对Style和css设置
    2019vue学习视频(入门到精通)
    新建一个vue项目
    FIS3 构建
    node环境变量
    阿里云重启ssh
    msf 获取session 之后
    acccheck (暴力破解使用SMB协议的Windows密码)
    利用 Cut 指定输出内容
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7259905.html
Copyright © 2011-2022 走看看