Насколько я знаю, стандарт Fortran ничего не говорит о разделителе путей к файловой системе.Лучшее, что я могу предложить, - это определить макрос, который определяет соответствующий разделитель.Например,
#if __unix__
character(len=1), parameter :: path_sep='/'
#elif _WIN32
character(len=1), parameter :: path_sep='\'
#else
#error "path_sep not defined. Set this constant for your system."
#endif
Однако, в Windows вы можете использовать /
или \
в качестве разделителя пути (попробуйте!), Поэтому в большинстве систем нет необходимостиделать что-то особенное с разделителем пути.
Обратите внимание, что вам не нужно определять разделитель пути во время выполнения .Поскольку вы должны перекомпилировать исходный код Fortran для каждой новой системы, на которой вы хотите его запустить, вам просто нужно убедиться, что во время компиляции для каждой новой системы указан правильный разделитель пути ( разделитель пути не изменится между запускамивашей программы в той же системе ).
Использование макросов препроцессора, подобных приведенным выше, очевидный способ сделать это: вы можете просто добавить новое предложение #elif
для каждой новой системы, которую вы портируете свой кодк.Это намного проще, чем вводить решения типа picemeal, которые проверяют определенные переменные среды, как предлагают другие ответы.
Кроме того, при указании разделителя пути вам также может потребоваться установить параметры для других аспектов среды операционной системы.Например, символы текущего и родительского каталогов (.
и ..
соответственно в системах Windows и POSIX).
Наконец, обратите внимание, что препроцессор определяет __unix__
и _WIN32
широко используемые макросы, которыеукажите, в какой системе вы находитесь, и одна, в зависимости от того, в какой системе вы находитесь, должна быть установлена большинством компиляторов.Если они не установлены, вы обычно можете использовать флаг -D__unix__=1
или -D_WIN32=1
при компиляции исходного кода для установки одного из этих макросов.Для предварительной обработки кода с использованием параметров командной строки -cpp
(gfortran) или -fpp
(ifort) или изменения расширений исходных файлов с .f
на .F
или с .f90
на .F90
.