Я должен использовать код Fortran для предварительной обработки.Мой код работает нормально, если я пишу все определяемые переменные (макросы) явно одну за другой с помощью cpp
cpp -P -traditional -DMPI -DGFORTRAN -DMCT...-I... myfile.F
Но я намереваюсь предоставить их, используя два заголовочных файла.Один, в котором упоминаются все переменные определения, и второй, в котором снова определяются комбинации параметров определения.Поэтому я попытался,
cpp -P -traditional -D'HEADER="myheader.h"'
-D'GLOBAL_DEFS="globaldefinition.h"' -I... myfile.F
Я не знаю почему, но это не дает соответствующего вывода (я получаю только начальную и конечную строки своего кода, а не текст между ними).Кажется, что командная строка не читает заголовок и файл глобального определения.Я понятия не имею, что здесь не так, поскольку я не знаком с C ++.
Вот пример: когда я пишу
cpp -P -traditional -DMPI -DLINUX -DX86_64 -DGFORTRAN
-D'HEADER="myheader.h"' -DMCT_LIB -DMCT_INTERP_OC2AT -DCOUPLING -D'GLOBAL_DEFS="globaldefs.h"' -I/usr/local/include -I../../../bin.dir mct_dir_coupler_params.F
, я получаю
Module mct_dir_coupler_params
USE mod_dir_coupler_kinds
implicit none ! ! Number of coupling models. !
integer :: N_mctmodels
! ! Sparse matrix weights !
integer, dimension(:), pointer :: sparse_rows
integer, dimension(:), pointer :: sparse_cols
integer, dimension(:), pointer :: dst_grid_imask
integer, dimension(2) :: src_grid_dims, dst_grid_dims
real(m8), dimension(:), pointer :: sparse_weights
TYPE T_DST_GRID
integer, pointer :: dst_mask(:)
END TYPE T_DST_GRID
TYPE (T_DST_GRID), allocatable :: O2A_CPLMASK(:,:)
TYPE (T_DST_GRID), allocatable :: A2O_CPLMASK(:,:)
TYPE (T_DST_GRID), allocatable :: W2A_CPLMASK(:,:)
! ! Number of parallel nodes assigned to each model in the coupled ! system. !
integer :: NnodesATM
integer :: NnodesWAV
integer :: NnodesOCN
END Module mct_dir_coupler_params
Но я хочу использовать
cpp -P -traditional -D'HEADER=myheader.h'
-D'GLOBAL_DEFS="globaldefs.h"' -I/usr/local/include -I../../../bin.dir mct_dir_coupler_params.F
Вывод:
MODULE mct_dir_coupler_params
END MODULE mct_dir_coupler_params