6.3 Не-Fortran главная программа
Даже если вы используете смешанное программирование на разных языках, вам, скорее всего, не нужно знать или использовать информацию в этом разделе. Поскольку она касается внутренней структуры GNU Fortran, она может также изменяться в малых релизах GCC.
При компиляции PROGRAM с помощью GNU Fortran генерируется функция с именем main (в таблице символов объектного файла), которая инициализирует библиотеку libgfortran, а затем вызывает фактическую программу, использующую имя MAIN__, по историческим причинам. Если вы связываете процедуры, скомпилированные GNU Fortran, например, с программой на C или C++, или с программой на Fortran, скомпилированной другим компилятором, библиотека libgfortran не инициализируется, и поэтому некоторые встроенные процедуры не работают должным образом, например, те, которые получают аргументы командной строки.
Поэтому, если ваша PROGRAM не скомпилирована с помощью GNU Fortran, а процедуры, скомпилированные GNU Fortran, требуют встроенных функций, которые зависят от инициализации библиотеки, вам необходимо самостоятельно инициализировать библиотеку. Используя стандартные параметры, gfortran вызывает _gfortran_set_args и _gfortran_set_options. Инициализация первого необходима, если вызываемые процедуры обращаются к командной строке (и для отслеживания); последняя устанавливает некоторые флаги, основанные на выбранном стандарте или для включения отслеживания. В типичных программах не требуется вызывать какие-либо функции инициализации.
Если ваша PROGRAM скомпилирована с помощью GNU Fortran, вы не должны вызывать ни одну из следующих функций. Функции инициализации libgfortran показаны в синтаксисе C, но с помощью C-связей они также доступны из Fortran.
_gfortran_set_args— Сохранить аргументы командной строки_gfortran_set_options— Установить флаги опций библиотеки_gfortran_set_convert— Установить преобразование порядка байтов_gfortran_set_record_marker— Установить длину маркеров записей_gfortran_set_fpe— Включить ловушки исключений с плавающей точкой_gfortran_set_max_subrecord_length— Установить длину подзаписей
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gfortran/Non_002dFortran-Main-Program.html