【问题标题】:CPP -D option for preprocessing of Fortran codes用于 Fortran 代码预处理的 CPP -D 选项
【发布时间】:2018-05-22 07:51:01
【问题描述】:

我试图了解一个生成文件,其中 Fortran 代码与 cpp 一起使用,以下列方式进行预处理,

cpp -P -traditional -DMPI -DLINUX -DX86_64 -DGFORTRAN -D'HEADER="testfile.h"' -D'ROOT_DIR="/home/Desktop"'...-D'FILE_DIR="/home/Desktop/MYFILES"' -I/usr/local/include file.F

我了解包含目录的用法,但我无法理解此处列出的 -D 选项(命名为 CPPFLAGS)的用途。我看到,如果我删除任何 -D 选项,我的输出就会被修改(我只得到程序的开始和结束,中间没有文本)。

编辑:我有一个 ifdef 选项列表,我的 makefile 使用带有 -D 选项的不同子目录。它在那些目录中查找什么,在其中定义了选项的文件?

【问题讨论】:

标签: c++ fortran


【解决方案1】:

如果我理解正确,你只是想弄清楚 -D 的含义。 gcc -D 定义了一个由预处理器使用的宏。 语法如下:

$ gcc -Dname [options] [source files] [-o output file]
$ gcc -Dname=definition [options] [source files] [-o output file]

如果您删除任何 -D,则表示未定义此宏。所以你的输出可能会改变。

【讨论】:

  • 谢谢,但我如何才能知道必须使用哪个宏?我已经根据我的 Fortran 代码中包含文件的位置提到了包含目录,但我对宏及其在预处理中的选择一无所知。
  • @nshwal 这完全由您正在编译的代码设置。您必须研究手册或代码。我们无法告诉您各个宏在您的代码中的作用。
  • @VladimirF 这是模型代码的一部分,除了技术手册之外,我只有我想要理解的 makefile。
猜你喜欢
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多