Pascal的任何方言是否允许可变数量的参数?

pav*_*ium 2 language-features pascal

这是老程序员的问题.

几年前,我遇到了一种Pascal方言,通过某种扩展允许可变数量的参数.

有没有人知道Pascal的当前方言允许可变数量的参数?

考虑到Pascal不像以前那么受欢迎,如果答案是否定的,我不会感到惊讶.

顺便说一句,这是比较正确的,是不是,说了可变数量的参数,而不是参数?

kdg*_*ory 6

不.答案是基于我使用的Pascal方言; 其他人可能不同.

原因是Pascal按顺序将参数压入堆栈帧,因此所有参数都是通过堆栈指针的固定偏移量访问的.相比之下,C以相反的顺序推送参数,因此定义的参数处于固定偏移量,您可以通过指针算法访问"额外"参数.我会尝试一些ASCII艺术:

        Pascal                  C

                                ---------------------
                                |     extra arg     |
        ---------------------   ---------------------
        |     1st param     |   |     3rd param     |
        ---------------------   ---------------------
        |     2nd param     |   |     2nd param     |
        ---------------------   ---------------------
SP ->   |     3rd param     |   |     1st param     |
        ---------------------   ---------------------
Run Code Online (Sandbox Code Playgroud)

至于参数与参数:当我学习它时,函数(方法)定义它的参数,调用者传递参数.我相信,这个定义来自Fortran手册,所以应该让你知道我多大了:-)