10

使用 gcc 和 gfortran,我可以生成由编译器使用定义的 preprossesor 宏列表(编辑以反映 ouah 的答案)

gcc -E -dM - < /dev/null

gfortran -cpp -E -dM /dev/null

分别(至少在 Linux 上)。

我怎样才能对英特尔编译器 icc 和 ifort 做同样的事情?我知道对于 ifort,这些宏是在此处定义的,但我希望能够自己生成此列表,因为正在使用的确切宏及其值将取决于所使用的编译器选项。我也知道predef项目。

4

3 回答 3

11

将此与英特尔编译器一起使用:

icc -E -dM - < /dev/null

请注意,gcc如果-E要使用-dM预处理器选项,则还需要该选项。

于 2012-02-19T13:55:22.417 回答
4

借助英特尔 Fortran 编译器 ifort,可以使用以下内容:

ifort -E -fpp /dev/null -dryrun 2>&1 | grep -e -D | cut -c 5-

似乎 ifort 没有-dM像 icc、gfortran 和 gcc 这样的等效标志。

于 2012-03-16T09:19:02.777 回答
1

对于gfortran,请注意,这会gfortran -E -dM - < /dev/null产生与调用 相同的结果gcc,这可能没有帮助。你可能想要这样的东西(来源):

gfortran -cpp -E -dM empty.f

这将为您提供一个较小的gfortran实际预定义列表。您会注意到,结果很可能不包括任何有助于确定操作系统的内容。通常,对于 Fortran,您可以自己定义这些。有关更多详细信息,请参见此处。您也可以尝试类似的方法,但我对该解决方案的实用性持怀疑态度。此外,该链接意味着曾经gfortran定义的内容比现在更多。

于 2014-09-26T18:49:37.007 回答