(这个问题是由上一个问题的答案提示的)
C11 标准在讨论兼容编译器应该能够支持的程序的复杂性时使用了以下公式:
5.2.4.1 翻译限制
实现应能够翻译和执行至少一个程序,该程序包含以下每个限制的至少一个实例:
...
- 一个函数调用中有 127 个参数
...
这个“至少一个”的措辞对我来说似乎很奇怪,因为它看起来像一个符合标准的程序可以对大多数用法施加任意限制并且仍然是合规的。例如,可变参数函数的参数限制为 63 个,而具有显式参数的函数的参数限制为 127 个。或者要求只有名称以“BIGARG_”开头的函数才能调用超过 99 个参数。或者其他一些这样的限制。
即使有潜在的任意限制,也可能存在一些奇怪的情况,即支持 127 个参数限制,因此可以翻译和执行至少一个包含该限制的至少一个实例的程序。只是并非所有(甚至大多数)接近该限制的程序都将得到支持。
这种特殊的措辞是否有理由?为什么不明确要求支持遵守这些限制的每个程序(否则兼容)?或者是否有其他机制需要统一支持,例如函数调用中的 127 个参数?