c - 可变参数函数仿真方法的优缺点
问题描述
我正在一个平台上工作,我们可以在该平台上编译 C 代码(和其他非 C 代码),但不能编译可变参数函数或 va_list。我想模仿这种机制——重点是实现的简单性/便利性,而不是最佳性能。我还想避免依赖 ABI 功能、使用asm()
等。
天真地,我在考虑传递一些参数、一个参数大小数组和一个参数数据数组(后者是动态分配的上限大小)。当然,还有用于构建这些东西的函数。
这种方法的优点和缺点是什么?说,相对于所有东西都在一个数组中的方法,也许有某种空指针终止 a-la-argv?还是适当的节点列表?
另外,我是否在重新发明轮子,甚至标准的 varags 实现已经满足了我的要求?
笔记:
- C 变体或多或少是 C99。所以没有 K&R 漏洞,也没有来自 C11 的 _Generic。
- “用户”有责任担心类型识别——使用格式字符串或其他一些参数。就像使用常规可变数量的参数一样。
解决方案
推荐阅读
- scala - 从数据框中过滤数据
- flutter - Flutter - 如果内容溢出,如何使页面可滚动,但如果没有,则扩展?
- python - 在 Mac 上使用 Python 评论 Jupyterlab 的快捷键
- python - Pandas-根据重复行更新特定列中的值
- c++ - 使用带有 constexpr 参数的 std::enable_if 进行重载解析不能按预期工作
- javascript - 当我有多个用户输入时如何识别正确的输入 - html 和 javascript
- spring - 如何控制 Spring Boot Admin 调用自定义 HealthIndicator 的频率?
- java - Servlet 错误 404 - 请求的资源 [/ECommerce/Auth] 不可用
- mvvmcross - 在关闭 xamarin 视图时,我收到错误:当它也是当前显示的页面时,无法删除根页面
- css - 打印布局的 Chrome 渲染损坏