You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fortran 90代码中#include缩进导致编译报错问题排查

解决Fortran中缩进#include语句引发的编译错误

问题背景

在维护调用LIS库的冰盖模型Fortran代码时,将#include "lisf.h"语句缩进后编译,触发错误:

Error: Invalid character in name at (1)
即使添加了-cpp编译选项,问题仍未解决,使用的编译命令如下:

FC=gfortran #the compiler to use
lis=-I/usr/local/bin/include #location of the lis library header lisf.h
$FC -cpp elsa_classes.f90 elsa0.f90 -o elsa0 $NCf $lis $mpi

根本原因

启用-cpp选项后,gfortran会调用C预处理器处理代码,而C预处理器要求所有预处理指令(以#开头的语句,比如#include)必须从行首开始,不能包含任何前置缩进。原代码中无缩进的#include语句符合要求,因此能正常编译,而缩进后的语句违反了预处理规则,导致报错。

解决方案

  1. 将所有#include类预处理语句移至行首,删除前置的缩进空格
  2. 保留编译命令中的-cpp选项,确保预处理器能正确识别头文件引用

正确代码示例

#include "lisf.h"  ! 预处理语句从行首开始,无缩进

subroutine ice_sheet_calc()
    ! 业务代码可以正常缩进
    ! ...
end subroutine ice_sheet_calc

内容的提问来源于stack exchange,提问作者Robert Law

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:04:53