Обычные причины плохого предупреждения препроцессора

Я не знаком с тем, что вызывает следующее предупреждение:

warning #5117: Bad # preprocessor line
#include "rtt_alloc_rad.interface"

Я рассмотрел очевидные проблемы, такие как #include, сброшенный влево. Хотелось бы получить несколько советов о том, где искать возможные причины.

Я использую компилятор Intel: ifort версии 15.0.1.

Код с большой моделью климата связан с внешней библиотекой. Трудно понять, что публиковать, но предупреждение исходит из следующего фрагмента:

MODULE rtt_interface

use rtt_types,    only : rtt_options, rtt_coefs, profile_Type, &
transmission_Type, radiance_Type,rtt_coef_scatt_ir,rtt_optpar_ir, &       
rtt_chanprof, rtt_emissivity, rtt_reflectance
use rtt_const,    only : errorstatus_success, errorstatus_fatal, & 
platform_name,inst_name
use rtt_unix_env, only : rtt_exit
use cosp_kinds,     only : wp,wi,wl

IMPLICIT NONE

real(wp), parameter :: tmin_baran = 193.1571_wp  

#include "rtt_alloc_rad.interface" 
#include "rtt_alloc_transmission.interface"
#include "rtt_alloc_prof.interface"
#include "rtt_dealloc_coefs.interface"
#include "rtt_direct.interface"
#include "rtt_print_opts.interface"

! snip...

END MODULE rtt_interface

Я компилирую с флагами: f90flags=-g -fp-model precise -traceback -r8 -O0


person Shejo284    schedule 11.04.2016    source источник
comment
Это поможет, если вы покажете код   -  person Chiel    schedule 11.04.2016
comment
Помогает ли добавление -fpp к вашим флагам компиляции?   -  person francescalus    schedule 11.04.2016
comment
@francescalus Да, добавление -fpp помогает. Что было не так и как помог -fpp?   -  person Shejo284    schedule 11.04.2016


Ответы (1)


Сообщение

предупреждение № 5117: Неверная # строка препроцессора

потенциально немного вводит в заблуждение. Это говорит о том, что код был пропущен через препроцессор, а препроцессор недоволен. Это не всегда так: ifort также выдает это предупреждающее сообщение, когда директивы препроцессора встречаются в исходном файле, но препроцессор не вызывается.

Чтобы убедиться, что препроцессор запущен, у вас есть несколько вариантов:

  • добавить флаг -fpp (или -cpp) в команду компиляции;
  • назовите исходный файл в произвольной форме с суффиксом .F90 (обратите внимание на заглавную).
person francescalus    schedule 11.04.2016
comment
Я понимаю. Спасибо за вашу помощь :-) - person Shejo284; 11.04.2016