从发电站(4)到英特尔fortran编译器的移植(11/2003)
在将fortran代码从power station移植到fortran编译器(2003)时,我需要注意哪些必要条件 我观察到的是,在电站中,所有变量都被视为全局变量(甚至局部变量)。其中,与intel fortran(2003)一样,它们对本地和全局有单独的作用域。所以我需要把所有的局部变量变成gloabal。在fortran 2003中,是否有任何选项(从属性)将所有局部变量设置为全局变量。因为我的代码中有成百上千的变量。除了将所有局部变量分配给全局变量(公共块中的平均值),有人能为它提出一个好的解决方案吗从发电站(4)到英特尔fortran编译器的移植(11/2003),fortran,fortran-common-block,Fortran,Fortran Common Block,在将fortran代码从power station移植到fortran编译器(2003)时,我需要注意哪些必要条件 我观察到的是,在电站中,所有变量都被视为全局变量(甚至局部变量)。其中,与intel fortran(2003)一样,它们对本地和全局有单独的作用域。所以我需要把所有的局部变量变成gloabal。在fortran 2003中,是否有任何选项(从属性)将所有局部变量设置为全局变量。因为我的代码中有成百上千的变量。除了将所有局部变量分配给全局变量(公共块中的平均值),有人能为它提出一个
除此之外,在将代码从powerstation移植到“英特尔fortran编译器”(11/2003)时,我还需要注意其他问题吗?我不知道这两个编译器的具体情况,但如果必须将所有变量放入公共块中,那将非常奇怪。所有变量都是全局变量的证据是什么?与较新编译器相比,较旧编译器的子程序(子例程和函数)中的局部变量可能存在一个问题,即变量的值是否在子程序调用期间持续存在。Fortran标准仅在使用“save”属性声明变量时才保证此行为。一些较旧的编译器使所有变量持久化(静态内存),无论是否使用“save”。如果程序员省略了一个“save”,那么当旧程序被移植到新的编译器时,这可能会导致错误。许多较新的编译器提供了一个编译选项,以使所有变量持久化(例如,当前英特尔Fortran编译器的/Qsave)。或者,您可以在每个子程序中添加“保存”--不带变量的“保存”将使所有变量保持不变。将fortran代码从power station移植到fortran编译器(2003)时,我需要注意哪些必要条件? Fortran Powerstation只是一个编译器。英特尔的Visual Fortran也是如此。
而fortran是一种语言。尽管上述两个版本都有一些非标准的供应商扩展,但只要您坚持使用该标准,移植就不会有问题(fortran77标准编译器应该在当今最新的编译器上编译,不会出现错误) 因此,只有当你使用一些非标准的,MS特定的东西时,问题才会出现。没有人能在没有看到实际代码的情况下真正帮助您 我观察到的是,在电站中,所有变量都被视为全局变量(甚至局部变量)。其中,与intel fortran(2003)一样,它们对本地和全局有单独的作用域。因此,我需要将所有局部变量设置为全局变量。 嗯,没有。 我的意思是,你可以说,fortran中有“全局”变量和“局部”变量(尽管它们不是这样称呼的),但我向你保证,它们在两个编译器中都得到了正确的处理。我最近使用了这两种FPS(我仍然可能在某处安装了它),它们得到了应有的对待 在fortran 2003中,是否有任何选项(从属性)将所有局部变量设置为全局变量。因为我的代码中有成百上千的变量。除了将所有局部变量分配给全局变量(公共块中的平均值),有人能为其提出一个好的解决方案吗? 就个人而言,如果可以的话,我会避免使用公共块。它们很好,但在大多数情况下它们是可以避免的 除此之外,在将代码从powerstation移植到英特尔fortran编译器(2003年11月)时,我还需要注意其他问题吗? 重命名库和模块 英特尔的编译器系列是微软的后代,所以这确实是一种“自然”的方式。然而,在没有看到一些实际数据的情况下,很难做出这样的猜测并给出一般性的建议
p、 不过,一些“一般建议”可以在网站上找到,也可以在大量其他用户中找到。他们最关心的是从CVF到IVF的过渡,但我想你可以时不时地找到FPS用户。不过,我再说一遍,fortran是一种非常标准化的语言。因此,非常便于携带。考虑到前面提到的问题,从一个编译器跳到另一个编译器不应该有困难