source: public/doc/gnu-c/The-main-Function.html@ 02598c2

Last change on this file since 02598c2 was 02598c2, checked in by Mikhail Kirillov <w96k@…>, on Oct 6, 2022 at 12:36:29 PM

Add gnu-c

  • Property mode set to 100644
File size: 5.7 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
4
5(The work of Trevis Rothwell and Nelson Beebe has been assigned or
6licensed to the FSF.)
7
8Permission is granted to copy, distribute and/or modify this document
9under the terms of the GNU Free Documentation License, Version 1.3 or
10any later version published by the Free Software Foundation; with the
11Invariant Sections being "GNU General Public License," with the
12Front-Cover Texts being "A GNU Manual," and with the Back-Cover
13Texts as in (a) below. A copy of the license is included in the
14section entitled "GNU Free Documentation License."
15
16(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
17modify this GNU manual. Buying copies from the FSF supports it in
18developing GNU and promoting software freedom." -->
19<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
20<head>
21<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22<title>The main Function (GNU C Language Manual)</title>
23
24<meta name="description" content="The main Function (GNU C Language Manual)">
25<meta name="keywords" content="The main Function (GNU C Language Manual)">
26<meta name="resource-type" content="document">
27<meta name="distribution" content="global">
28<meta name="Generator" content="makeinfo">
29<link href="index.html" rel="start" title="Top">
30<link href="Symbol-Index.html" rel="index" title="Symbol Index">
31<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
32<link href="Functions.html" rel="up" title="Functions">
33<link href="Values-from-main.html" rel="next" title="Values from main">
34<link href="Calling-Function-Pointers.html" rel="prev" title="Calling Function Pointers">
35<style type="text/css">
36<!--
37a.summary-letter {text-decoration: none}
38blockquote.indentedblock {margin-right: 0em}
39div.display {margin-left: 3.2em}
40div.example {margin-left: 3.2em}
41div.lisp {margin-left: 3.2em}
42kbd {font-style: oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47span.nolinebreak {white-space: nowrap}
48span.roman {font-family: initial; font-weight: normal}
49span.sansserif {font-family: sans-serif; font-weight: normal}
50ul.no-bullet {list-style: none}
51-->
52</style>
53
54
55</head>
56
57<body lang="en">
58<span id="The-main-Function"></span><div class="header">
59<p>
60Next: <a href="Advanced-Definitions.html" accesskey="n" rel="next">Advanced Definitions</a>, Previous: <a href="Function-Pointers.html" accesskey="p" rel="prev">Function Pointers</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
61</div>
62<hr>
63<span id="The-main-Function-1"></span><h3 class="section">22.6 The <code>main</code> Function</h3>
64<span id="index-main-function"></span>
65<span id="index-main"></span>
66
67<p>Every complete executable program requires at least one function,
68called <code>main</code>, which is where execution begins. You do not have
69to explicitly declare <code>main</code>, though GNU C permits you to do so.
70Conventionally, <code>main</code> should be defined to follow one of these
71calling conventions:
72</p>
73<div class="example">
74<pre class="example">int main (void) {<span class="roman">&hellip;</span>}
75int main (int argc, char *argv[]) {<span class="roman">&hellip;</span>}
76int main (int argc, char *argv[], char *envp[]) {<span class="roman">&hellip;</span>}
77</pre></div>
78
79<p>Using <code>void</code> as the parameter list means that <code>main</code> does
80not use the arguments. You can write <code>char **argv</code> instead of
81<code>char *argv[]</code>, and likewise for <code>envp</code>, as the two
82constructs are equivalent.
83</p>
84
85<p>You can call <code>main</code> from C code, as you can call any other
86function, though that is an unusual thing to do. When you do that,
87you must write the call to pass arguments that match the parameters in
88the definition of <code>main</code>.
89</p>
90<p>The <code>main</code> function is not actually the first code that runs when
91a program starts. In fact, the first code that runs is system code
92from the file <samp>crt0.o</samp>. In Unix, this was hand-written assembler
93code, but in GNU we replaced it with C code. Its job is to find
94the arguments for <code>main</code> and call that.
95</p>
96<table class="menu" border="0" cellspacing="0">
97<tr><td align="left" valign="top">&bull; <a href="Values-from-main.html" accesskey="1">Values from main</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Returning values from the main function.
98</td></tr>
99<tr><td align="left" valign="top">&bull; <a href="Command_002dline-Parameters.html" accesskey="2">Command-line Parameters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing command-line parameters
100 provided to the program.
101</td></tr>
102<tr><td align="left" valign="top">&bull; <a href="Environment-Variables.html" accesskey="3">Environment Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing system environment variables.
103</td></tr>
104</table>
105
106<hr>
107<div class="header">
108<p>
109Next: <a href="Advanced-Definitions.html" accesskey="n" rel="next">Advanced Definitions</a>, Previous: <a href="Function-Pointers.html" accesskey="p" rel="prev">Function Pointers</a>, Up: <a href="Functions.html" accesskey="u" rel="up">Functions</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
110</div>
111
112
113
114</body>
115</html>
Note: See TracBrowser for help on using the repository browser.