gpt4 book ai didi

function - 传递给 Fortran 函数的参数数量是否有限制?

转载 作者:行者123 更新时间:2023-12-02 21:25:33 30 4
gpt4 key购买 nike

我遇到了一些 Fortran 90 代码,其中将 68 个参数传递给函数。在网上搜索时,我只发现一些 CUDA Fortran 相关内容的传递 256 字节的限制( http://www.pgroup.com/userforum/viewtopic.php?t=2235&sid=f241ca3fd406ef89d0ba08a361acd962 )。

所以我想知道:可以传递给 Intel/Visual/GNU fortran 编译器的函数的参数数量是否有限制?

最佳答案

我遇到了有关 Fortran 90 标准的讨论:

http://www.nag.co.uk/sc22wg5/Guidelines_for_Bindings-b.html

相关部分如下斜体:

3.4 语句

Fortran 语句长度的限制对过程调用的长度施加了上限。虽然这不太可能是一个严重的强加,但自由格式的单个 Fortran 语句的上限为 5241 个字符,包括可能的标签(F90 第 3.3.1、3.3.1.4 节);在固定格式中,上限为 1320 个字符加上可能的标签(F90 第 3.3.2 节)。这些限制取决于“默认类型”的字符,即实际上是单字节字符;对于双字节字符(例如用于表意语言),限制取决于处理器,但大小可能相同。

Fortran 标准中对过程参数的最大数量没有限制

我正在研究中开发一个用于分析二进制文件的安全工具。我知道 C 语言对参数数量有限制(C90 标准中为 31 个,C99 标准中为 127 个),因此我认为我可以对一个向量进行维数以容纳与传入参数相关的 128 个项目。我遇到了一个由 FORTRAN 派生的二进制文件,其中传递了 290 个参数,这引发了我的讨论。该二进制文件来自 SPEC CPU2006 基准测试套件 benchmark 481.wrf,其中我看到一个名为(在二进制文件中)“solve_interface_”的过程,它在堆栈上设置 290 个参数,然后调用“solve_em_”来实际处理这些参数。毫无疑问,您可以在线找到这些程序的 FORTRAN 源代码。该二进制文件是由 GNU 编译器工具为 x86/Linux/ELF 系统生成的。

关于function - 传递给 Fortran 函数的参数数量是否有限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24673375/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com