我尝试使用两个同名的外部 Fortran 模块(在本例中为mod_param)。因此,当我尝试编译代码时,编译器会出现以下错误,
mod_param.o:在函数mod_param._':
mod_param.f90:(.text+0x0): multiple definition of
mod_param ._'
mod_param.o:mod_param.F90:(.text + 0x0):首先在这里定义
有没有办法解决它而不重命名模块文件及其名称之一?我不喜欢重命名,因为外部模块是由其他人维护的,我不想玩它们。是否有任何特殊用途声明?
答案 0 :(得分:2)
没有。有必要在至少一个模块中更改源代码中的函数名称。
由于代码是由其他人维护的,因此请考虑自动重命名:项目Makefile可以运行sed
脚本来更改函数名称。为了明确依赖关系,请确保将sed脚本的输出设置为一个用于编译的新文件名 - 处女模块将具有未编译或链接到项目中的文件名。
即使以某种方式可以使用相同的名称将它们链接起来,您如何控制使用名称调用哪个?
答案 1 :(得分:2)
根据F2003标准,模块名称是全局实体,在程序中必须是唯一的,并且内部模块具有一些扩展。
那么,这将是一个不(除此之外,如果它们具有相同的名称,你会如何分辨它们?)