c - 生成动态参数 C

标签 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 函数怎么办?所以它看起来像这样:

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

这在 C 中可行吗?

最佳答案

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

关于c - 生成动态参数 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57418279/

相关文章:

c - 删除双向链表中的第 n 个节点

c - 如何在 C 中将实时音频数据(更新缓冲区)呈现为音频文件

c - x86 上未对齐的指针

c - 多个 goto 标签如何工作

c - 如何检查字符串中是否至少存在三位数字?

c - 函数中的参数

c - 此处代码中#define 指令中的## 是什么意思

c - 如何判断两个不同版本的gcc是否兼容?

c - 如何用C语言递归获取给定数量元素的集合的子集?

c - 如何解释 *d++=*s++ 中运算符的优先级