#preprocessor #fortran
#препроцессор #fortran
Вопрос:
Я пытаюсь предварительно обработать модуль Fortran (pmu.F90) с помощью pgf90. Модуль выглядит следующим образом:
module pmu
module variables
contains
include 'file.F90'
end module
file.F90
это подпрограмма, которая содержит следующие строки:
#ifdef PART
startm1 = xstart - 1
startm2 = xstart - 2
endp1 = xend 1
endp2 = xend 2
#else
startm1 = xstart - 1
startm2 = xstart - 1
endp1 = xend 1
endp2 = xend 1
#endif
Если я скомпилирую с:
pgf90 -DPART -Mfree -Mbounds -Msave -Mdclchk -r8 -Mpreprocess -I/data/users/mrosso/fftw3/include -c pmu.F90
Я получаю
PGF90-S-0021-Label field of continuation line is not blank.
Ответ №1:
Что ж, включенный файл не содержит процедур, что вам и нужно между инструкциями «contains» и «end module» в файле модуля pmu.
Еще одна проблема при использовании CPP с Fortran заключается в том, что оператор Fortran include отличается от CPP #include. В частности, их взаимодействие не указано. То есть, если вы включаете файл, который сам по себе содержит директивы CPP, становится на одну ошибку меньше, если вместо этого вы используете #include .
Комментарии:
1. В OP указано, что «файл. F90′ содержит подпрограмму. Если я правильно понимаю, фрагмент кода, который он показал, — это всего лишь часть, а не все целиком. Я согласен с вами в том, что вы сказали о взаимодействии между CPP и оператором Fortran include.