【发布时间】:2016-09-24 18:34:08
【问题描述】:
用于连接的 C 预处理器宏 (##) 似乎不适用于使用 gfortran 的 Mac。在其他系统上使用其他 Fortran 编译器可以工作,所以我正在寻找 gfortran 的解决方法。我必须使用## 来创建许多变量,所以我不能没有它们。
示例代码:
#define CONCAT(x,y) x##y
program main
integer, parameter:: CONCAT(ID,2) = 3
print*,"Hello", ID_2
end program main
gfortran 在 MAC 上的编译错误
gfortran m.F90 -o m
m.F90:5.23:
integer, parameter:: ID##2 = 3
1
Error: PARAMETER at (1) is missing an initializer
【问题讨论】:
-
通常的策略是先把文件传给预处理器,再编译预处理后的文件:stackoverflow.com/questions/38953392/…
-
gfortran 设置了 tradcpp (gcc -E -traditional) 以避免 c99 // cmets 和 Fortran 连接之间的冲突。如前所述,一个典型的替代方案是显式使用不同的预处理器,例如通过 Makefile。
标签: macos macros fortran c-preprocessor gfortran