假设我有一个文件test.f90
(自由格式代码),其中包含一些其他文件foo.h
(固定代码)。
两者没有很好地协同工作,因为它们有不同的评论风格,所以我在!DIR$ NOFREEFORM
源代码的顶部放置了一个预处理器指令foo.h
,告诉英特尔' Fortran编译器ifort
将该文件解释为固定格式的源代码。
不幸的是,test.f90
中的其余代码会收到错误,表明ifort
正在将其解释为固定格式而非自由格式代码。
我没有经过严格的检查,但 foo.h
中的预处理程序指令可能导致ifort
将test.f90
中的代码解释为固定格式?我没想到这是可能的,因为ifort
将每个包含的文件视为单独的编译,而不仅仅是复制粘贴代码。
答案 0 :(得分:3)
最新标准声明
INCLUDE行的效果就像引用的源文本一样 在程序处理之前,物理地替换了INCLUDE行。
所以完全有可能,实际上绝对不可避免的是,包含文件中的预处理程序指令会导致编译器更改其对代码的解释。
include
- d文件不单独的编译单元。
我猜你应该能够使用!DEC$ FREEFORM
再次切换编译器的行为。