当前位置:  开发笔记 > 编程语言 > 正文

变异函数 - 是否存在参数限制?

如何解决《变异函数-是否存在参数限制?》经验,为你挑选了1个好方法。

一个有趣的问题出现了,我已经做了一些研究,但无法找到一个确定的答案.我也怀疑答案,但我认为SO人群可能真的知道.

传递给可变参数函数的参数数量实际上是否有限制?

我能找到的所有文档在这一点上都是完全无声的.各种C标准中支持的参数有最小数量,但没有列出最大值.我已经用60,000个参数测试了代码而没有任何问题.

我的假设

我怀疑这实际上取决于体系结构,并且实际上会受到最大堆栈大小的限制.

编辑

我可能已经把人们带到了错误的方向.我的重点不在于最小值,而在于它们是否了解任何实际最大值,无论是基于标准,编译器实现还是体系结构.



1> Keith Thomps..:

C标准没有施加此类限制.

C标准确实需要任何一致的实现来支持一些在函数调用中传递至少127个参数的程序(参见N1570第5.2.4.1节),但这既不是可变函数的上限也不是下限.调用不必是一个可变函数,并且实现可以自由地支持超过127个参数.定义的部分7.16没有提到任何限制.

实际上,任何限制都可能由可用资源强加,无论是在编译时(编译调用时)还是在运行时(执行时).

而且仅仅由于常识和市场力量,编译器可能会支持任意长的参数列表而不是强加一些固定限制.一旦您需要支持127个参数,动态分配任何所需的数据结构可能比使用固定大小的结构更容易.(在我看来,5.2.4.1中的翻译限制点是为了鼓励编制者根本不施加固定限制.)

另一方面,符合标准的编译器可能会施加不合理的小限制,而针对非常小的嵌入式系统的编译器甚至可能有正当理由这样做.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有