Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module 在Fortran中使用外部模块_Module_Fortran - Fatal编程技术网

Module 在Fortran中使用外部模块

Module 在Fortran中使用外部模块,module,fortran,Module,Fortran,我尝试使用两个同名的外部Fortran模块(在本例中为mod_param)。因此,当我试图编译代码时,编译器会给出以下错误: mod_param.o:在函数mod_param.\u0'中: 模块参数f90:(.text+0x0):模块参数的多个定义 mod_param.o:mod_param.F90:(.text+0x0):首先在此处定义 有没有办法在不重命名模块文件及其名称的情况下解决此问题?我不喜欢重命名,因为外部模块由其他人维护,我不想使用它们。是否有任何特殊的use语句来执行此操作?否。

我尝试使用两个同名的外部Fortran模块(在本例中为mod_param)。因此,当我试图编译代码时,编译器会给出以下错误:

mod_param.o:在函数
mod_param.\u0'中:
模块参数f90:(.text+0x0):模块参数的多个定义
mod_param.o:mod_param.F90:(.text+0x0):首先在此处定义


有没有办法在不重命名模块文件及其名称的情况下解决此问题?我不喜欢重命名,因为外部模块由其他人维护,我不想使用它们。是否有任何特殊的use语句来执行此操作?

否。必须在至少一个模块的源代码中更改函数名

由于代码是由别人维护的,请考虑自动重命名:也许项目MaFIX文件可以运行一个<代码> SED脚本,该脚本更改了函数名。为了明确依赖关系,请确保sed脚本的输出是一个用于编译的新文件名。virgin模块将具有一个未编译或链接到项目中的文件名


即使可以以某种方式将它们链接到同一个名称中,您将如何控制使用该名称调用的函数名?

否。必须在至少一个模块的源代码中更改函数名

由于代码是由别人维护的,请考虑自动重命名:也许项目MaFIX文件可以运行一个<代码> SED脚本,该脚本更改了函数名。为了明确依赖关系,请确保sed脚本的输出是一个用于编译的新文件名。virgin模块将具有一个未编译或链接到项目中的文件名


即使可能以某种方式将它们链接到同一个名称中,您将如何控制使用该名称调用的模块?

根据F2003标准,模块名称是全局实体,并且在程序中必须是唯一的,内部模块有一些exteption


因此,这将是一个否(此外,您如何区分它们是否具有相同的名称?

根据F2003标准,模块名称是全局实体,并且在程序中必须是唯一的,对于内部模块有一些扩展


所以,这将是一个否定(此外,你如何区分他们是同一个名字?

对我来说同样的问题。根据Rook和Wallyk的答案,我想一个好的解决方案就是在程序的模块名(例如myprogram_mod_param)中添加前缀或后缀。我也有同样的问题。根据Rook和Wallyk的答案,我想一个好的解决方案就是在程序的模块名中添加前缀或后缀(例如myprogram_mod_param)。