2011-05-03 67 views
1

我想做到以下几点:C预处理器宏将Fortran程序的字符串转换为小写?

在一个FORTRAN程序

呼叫myPackageFunction( “MPI_User_function”)

...应转移BY AC PREPROCESSOR MAKRO到...

调用myPackageFunction(“mpi_user_function_”)

我想这样做的原因是我的包(平均MATLAB和Fortran用户)的用户不必知道关于nam对Fortran进行修改,但同时为用户执行此任务不会减慢完成包的功能。

有人知道我该怎么做吗?我会非常感谢任何帮助!

+1

什么时候会发生变换,用户的FORTRAN代码是否会通过C预处理器运行?这很清楚。 – unwind 2011-05-03 12:18:11

+0

是的,用户的FORTRAN代码将通过C预处理器运行。用户必须包含“myPackage.h”才能调用myPackageFunction。所以我可以在那里定义一个makro。可能是这样的:#define myPackageFunction(string)myPackageFunction() – Sam 2011-05-03 12:33:26

+1

它看起来像你试图将C例程传递给Fortran子例程,是吗?使用Fortran2003 Fortran <-> C互操作性,可以避免整个名称混乱问题,但如果我们更了解您要完成的任务,会更容易。 – 2011-05-03 12:50:34

回答

1

C预处理器不能做这种转换。

您可能需要编写一个自定义脚本来执行此操作,该操作在编译器运行之前由构建系统自动调用。

+0

非常感谢您的回答。为什么C预处理器不能做这种转换?因为根本无法访问字符串的各个字符? – Sam 2011-05-03 12:40:36

+1

@Sam:预处理程序的功能非常有限。基本上,它只能执行简单的复制和粘贴功能。 – 2011-05-03 12:43:20

+0

谢谢大家谁阅读我的文章=>我会遵循奥利查尔斯沃思的答案,并创建一个小预处理器脚本。 – Sam 2011-05-03 13:06:53

相关问题