首页 > 解决方案 > 生成动态参数 C

问题描述

假设以下宏:

#define print(...) \
    int a[] = {__VA_ARGS__}; \
    for (int i=0; i < sizeof(a)/sizeof(a[0]); i++){ \
        printf("%d\n", a[i]);\
    }

可用于1,2,3使用此调用进行打印:

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

现在,如果我想动态生成参数列表(例如在 for 循环中)并将其传递给print而不更改打印函数怎么办?所以它看起来像这样:

print(1,2,3,....,n);

这在 C 中可行吗?

标签: c

解决方案


您可以将它作为动态分配的整数数组传递,并告诉它数组有多大,而不是一堆单独的整数。但是你不能真正动态地改变它,宏需要在编译时解析。stdarg.h像其他人建议的那样,使用 VLA提供的功能可能会更容易做到这一点。


推荐阅读