MST

星途 面试题库

面试题:C语言中可变参数宏如何定义基础形式

请写出一个简单的C语言可变参数宏定义,该宏至少接受两个固定参数,之后可以接受可变数量的参数,并且在宏定义中能够简单打印出所有参数的值。
47.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <stdarg.h>

#define PRINT_ARGS(fixed1, fixed2, ...) \
do { \
    printf("Fixed parameter 1: %d\n", fixed1); \
    printf("Fixed parameter 2: %d\n", fixed2); \
    va_list args; \
    va_start(args, fixed2); \
    int arg; \
    while ((arg = va_arg(args, int)) != 0) { \
        printf("Variable argument: %d\n", arg); \
    } \
    va_end(args); \
} while (0)

你可以这样使用这个宏:

int main() {
    PRINT_ARGS(1, 2, 3, 4, 0);
    return 0;
}

在上述代码中:

  1. 定义了PRINT_ARGS宏,它接受两个固定参数fixed1fixed2,以及可变参数...
  2. 在宏体中,首先打印两个固定参数的值。
  3. 使用va_listva_startva_argva_end来处理可变参数。这里假设可变参数都是int类型,并且以0作为结束标志来打印可变参数的值。

注意,在实际应用中,可以根据具体需求修改参数类型和结束标志的判断条件。