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(1,2,3,....,n);
这在 C 中可行吗?
解决方案
您可以将它作为动态分配的整数数组传递,并告诉它数组有多大,而不是一堆单独的整数。但是你不能真正动态地改变它,宏需要在编译时解析。stdarg.h
像其他人建议的那样,使用 VLA提供的功能可能会更容易做到这一点。
推荐阅读
- c - 单链表创建函数 C
- hibernate - Spring数据规范内连接子查询
- java - 从 XML 文件构建 treeView primefaces
- c++ - 将malloc转换为new的正确方法
- android-studio - 我在 android studio 配置中遇到问题可以帮助我吗?
- flutter - Flutter:移动到上一个屏幕(2nd)并仅删除上一个屏幕(2nd 3rd 4th),而不是所有屏幕(1st 2nd 3rd 4th)
- powerbi - 有什么方法可以将 Einstein 分析连接到一些 3rd 方 BI 应用程序,例如 powerbi?
- sql - 选择连字符分隔的列到行
- authentication - 如何在另一个选项卡中使用活动的 GitHub 会话
- unity3d - 在使用 Unity 和 Oculus SDK 的 Oculus Quest 中,耳机位置始终返回零