Fortran中包含的文件中的指令

时间:2018-03-31 18:25:52

标签: fortran include intel-fortran

假设我有一个文件test.f90(自由格式代码),其中包含一些其他文件foo.h(固定代码)。

两者没有很好地协同工作,因为它们有不同的评论风格,所以我在!DIR$ NOFREEFORM源代码的顶部放置了一个预处理器指令foo.h,告诉英特尔' Fortran编译器ifort将该文件解释为固定格式的源代码。

不幸的是,test.f90中的其余代码会收到错误,表明ifort正在将其解释为固定格式而非自由格式代码。

我没有经过严格的检查,但 foo.h中的预处理程序指令可能导致iforttest.f90中的代码解释为固定格式?我没想到这是可能的,因为ifort将每个包含的文件视为单独的编译,而不仅仅是复制粘贴代码。

1 个答案:

答案 0 :(得分:3)

最新标准声明

  

INCLUDE行的效果就像引用的源文本一样   在程序处理之前,物理地替换了INCLUDE行。

所以完全有可能,实际上绝对不可避免的是,包含文件中的预处理程序指令会导致编译器更改其对代码的解释。

include - d文件单独的编译单元。

我猜你应该能够使用!DEC$ FREEFORM再次切换编译器的行为。