【宏定义】——获取宏的第 N 个参数,多余的参数舍弃

文章介绍了如何使用C语言宏定义来获取函数式宏的第三个和第四个参数,即使参数超出这三个也会被忽略。示例展示了_GET_3RD_ARG和_GET_4TH_ARG宏的用法,以及在不同参数数量情况下如何正确提取指定位置的参数值。
摘要由CSDN通过智能技术生成

功能说明

获取宏的第 N 个参数,多余的参数舍弃

实现

#define _GET_3RD_ARG(arg1, arg2, arg3, ...) arg3
#define _GET_4TH_ARG(arg1, arg2, arg3, arg4, ...)  arg4

_GET_3RD_ARG(1, 2) 编译报错

_GET_3RD_ARG(2, 1, 30) 返回 30

_GET_3RD_ARG(1, 2, 50, 60, 70) 返回 50

示例

#include <stdio.h>

#define _GET_3RD_ARG(arg1, arg2, arg3, ...) arg3

int main()
{
    int num1 = 10;
    int num2 = 20;

    int result = _GET_3RD_ARG(num1, num2, 30);     // 获取第三个参数
    printf("Result: %d\n", result);                // 输出结果:30
    result = _GET_3RD_ARG(num1, num2, 40, 50, 60); // 参数多余三个参数,只获取第三个参数
    printf("Result: %d\n", result);                // 输出结果:40

    return 0;
}

结果打印

Result: 30
Result: 40

解析

这个宏比较简单

  • arg1 arg2 arg3 占位符,表示最少要有 3 个参数
  • ... 这一特性,表示多余的参数被 ... 吸收
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值