【发布时间】:2011-08-17 16:12:37
【问题描述】:
我想做以下事情:
在 FORTRAN 程序中
调用 myPackageFunction("MPI_User_function")
...应由 A C PREPROCESSOR MAKRO 转移到...
调用 myPackageFunction("mpi_user_function_")
我想这样做的原因是我的包的用户(普通的 MATLAB 和 Fortran 用户)不必知道 Fortran 的名称修改,但同时为用户执行此任务不应慢做包功能。
有人知道我该怎么做吗?如果有任何帮助,我将不胜感激!
【问题讨论】:
-
何时进行转换,用户的 FORTRAN 代码是否将通过 C 预处理器运行?这不是很清楚。
-
是的,用户的 FORTRAN 代码将通过 C 预处理器运行。用户必须包含“myPackage.h”才能调用 myPackageFunction。所以我可以在那里定义一个makro。可能类似于:#define myPackageFunction(string) myPackageFunction(
) -
看起来您正试图将 C 例程传递给 Fortran 子例程,对吗?使用 Fortran2003 FortranC 互操作性,您可以避免整个名称混淆问题,但如果我们对您要完成的工作有更多了解,会更容易。
-
感谢您的评论。是的,我知道互操作性功能。然而,对于我的包来说,c 和 fortran 名称修饰之间的区别对我有利,除了这个小问题。 => 我将按照 Oli Charlesworth 的回答创建一个小预处理器脚本。