【问题标题】:C preprocessor macro to convert string of Fortran program to lowercase?C预处理器宏将Fortran程序字符串转换为小写?
【发布时间】: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 的回答创建一个小预处理器脚本。

标签: c++ fortran lowercase


【解决方案1】:

C 预处理器无法进行这种转换。

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

【讨论】:

  • 非常感谢您的回答。为什么 C 预处理器不能进行这种转换?因为根本无法访问字符串的各个字符?
  • @Sam:预处理器的功能非常受限。基本上,它只能做简单的复制粘贴之类的功能。
  • 感谢所有阅读我帖子的人 => 我将按照 Oli Charlesworth 的回答创建一个小预处理器脚本。
猜你喜欢
  • 1970-01-01
  • 2012-09-09
  • 2020-04-06
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2012-07-21
  • 2011-03-26
相关资源
最近更新 更多