<html lang="en"> <head> <title>Non-Fortran Main Program - The GNU Fortran Compiler</title> <meta http-equiv="Content-Type" content="text/html"> <meta name="description" content="The GNU Fortran Compiler"> <meta name="generator" content="makeinfo 4.13"> <link title="Top" rel="start" href="index.html#Top"> <link rel="up" href="Mixed_002dLanguage-Programming.html#Mixed_002dLanguage-Programming" title="Mixed-Language Programming"> <link rel="prev" href="GNU-Fortran-Compiler-Directives.html#GNU-Fortran-Compiler-Directives" title="GNU Fortran Compiler Directives"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being ``Funding Free Software'', the Front-Cover Texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled ``GNU Free Documentation License''. (a) The FSF's Front-Cover Text is: A GNU Manual (b) The FSF's Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.--> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"><!-- pre.display { font-family:inherit } pre.format { font-family:inherit } pre.smalldisplay { font-family:inherit; font-size:smaller } pre.smallformat { font-family:inherit; font-size:smaller } pre.smallexample { font-size:smaller } pre.smalllisp { font-size:smaller } span.sc { font-variant:small-caps } span.roman { font-family:serif; font-weight:normal; } span.sansserif { font-family:sans-serif; font-weight:normal; } --></style> </head> <body> <div class="node"> <a name="Non-Fortran-Main-Program"></a> <a name="Non_002dFortran-Main-Program"></a> <p> Previous: <a rel="previous" accesskey="p" href="GNU-Fortran-Compiler-Directives.html#GNU-Fortran-Compiler-Directives">GNU Fortran Compiler Directives</a>, Up: <a rel="up" accesskey="u" href="Mixed_002dLanguage-Programming.html#Mixed_002dLanguage-Programming">Mixed-Language Programming</a> <hr> </div> <h3 class="section">7.3 Non-Fortran Main Program</h3> <ul class="menu"> <li><a accesskey="1" href="_005fgfortran_005fset_005fargs.html#g_t_005fgfortran_005fset_005fargs">_gfortran_set_args</a>: Save command-line arguments <li><a accesskey="2" href="_005fgfortran_005fset_005foptions.html#g_t_005fgfortran_005fset_005foptions">_gfortran_set_options</a>: Set library option flags <li><a accesskey="3" href="_005fgfortran_005fset_005fconvert.html#g_t_005fgfortran_005fset_005fconvert">_gfortran_set_convert</a>: Set endian conversion <li><a accesskey="4" href="_005fgfortran_005fset_005frecord_005fmarker.html#g_t_005fgfortran_005fset_005frecord_005fmarker">_gfortran_set_record_marker</a>: Set length of record markers <li><a accesskey="5" href="_005fgfortran_005fset_005fmax_005fsubrecord_005flength.html#g_t_005fgfortran_005fset_005fmax_005fsubrecord_005flength">_gfortran_set_max_subrecord_length</a>: Set subrecord length <li><a accesskey="6" href="_005fgfortran_005fset_005ffpe.html#g_t_005fgfortran_005fset_005ffpe">_gfortran_set_fpe</a>: Set when a Floating Point Exception should be raised </ul> <p>Even if you are doing mixed-language programming, it is very likely that you do not need to know or use the information in this section. Since it is about the internal structure of GNU Fortran, it may also change in GCC minor releases. <p>When you compile a <code>PROGRAM</code> with GNU Fortran, a function with the name <code>main</code> (in the symbol table of the object file) is generated, which initializes the libgfortran library and then calls the actual program which uses the name <code>MAIN__</code>, for historic reasons. If you link GNU Fortran compiled procedures to, e.g., a C or C++ program or to a Fortran program compiled by a different compiler, the libgfortran library is not initialized and thus a few intrinsic procedures do not work properly, e.g. those for obtaining the command-line arguments. <p>Therefore, if your <code>PROGRAM</code> is not compiled with GNU Fortran and the GNU Fortran compiled procedures require intrinsics relying on the library initialization, you need to initialize the library yourself. Using the default options, gfortran calls <code>_gfortran_set_args</code> and <code>_gfortran_set_options</code>. The initialization of the former is needed if the called procedures access the command line (and for backtracing); the latter sets some flags based on the standard chosen or to enable backtracing. In typical programs, it is not necessary to call any initialization function. <p>If your <code>PROGRAM</code> is compiled with GNU Fortran, you shall not call any of the following functions. The libgfortran initialization functions are shown in C syntax but using C bindings they are also accessible from Fortran. </body></html>