forked from davout/lcthw
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1.html
More file actions
165 lines (156 loc) · 7.86 KB
/
1.html
File metadata and controls
165 lines (156 loc) · 7.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<link href='stylesheets/fonts.css' rel='stylesheet' type='text/css'>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="twitter:creator" content="@lzsthw">
<title>Learn C The Hard Way</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href='stylesheets/pure.css' rel='stylesheet'>
<link href='stylesheets/pygments.css' rel='stylesheet'>
<link href='stylesheets/main.css' rel='stylesheet'>
<link href='stylesheets/nav.css' rel='stylesheet'>
<style>
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.11: http://docutils.sourceforge.net/" />
<title>Exercise 1: Dust Off That Compiler</title>
</head>
<body id='wrapper'>
<div class='master-logo-wrapper clearfix'>
<a href='index.html'>
<div class='master-logo-sprite'></div>
</a>
<span class='edition-3'><img src='images/beta-edition-cloud.png' /></span>
</div><!-- /.master-logo-wrapper -->
<div style='clear: both;'>
<div id="main">
<div class='chapters-wrapper'>
<nav id='chapters'>
<div class='masthead-title'></div>
<ul class='masthead'>
<li>
<a href='/book/'>
<div class='nav-tcontents'>
<img src='images/nav-contents.png' /></br>
main
</div>
</a>
</li>
<li>
<a href='' id='prev_link'>
<div class='nav-previous'>
<img src='images/nav-previous.png' /></br>
previous
</div>
</a>
</li>
<li>
<a href='' id='next_link'>
<div class='nav-next'>
<img src='images/nav-next.png' /></br>
next
</div>
</a>
</li>
<li><!-- AMBULANCE ICON -->
<a href='help.html' id=''>
<div class='ambulance'>
<img src='images/help-ambulance.png' /></br>
help
</div>
</a>
</li>
<li id="follow">
<a href="https://twitter.com/lzsthw" class="twitter-follow-button" data-show-count="false" data-show-screen-name="false" data-dnt="true">Follow @lzsthw</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
</li>
</ul><!-- /.masthead -->
<!--<img src='images/fa-bullhorn.png' />-->
</nav><!-- /.chapters -->
</div><!-- /.chapters-wrapper -->
<!--- RST STARTS -->
<h1 class="title">Exercise 1: Dust Off That Compiler</h1>
<p>Here is a simple first program you can make in C:</p>
<div class="highlight"><pre><a name="code--ex1.c-pyg.html-1"></a><span class="kt">int</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span>
<a name="code--ex1.c-pyg.html-2"></a><span class="p">{</span>
<a name="code--ex1.c-pyg.html-3"></a> <span class="n">puts</span><span class="p">(</span><span class="s">"Hello world."</span><span class="p">);</span>
<a name="code--ex1.c-pyg.html-4"></a>
<a name="code--ex1.c-pyg.html-5"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<a name="code--ex1.c-pyg.html-6"></a><span class="p">}</span>
</pre></div><p>You can put this into a <tt class="docutils literal">ex1.c</tt> then type:</p>
<pre class="literal-block">
$ make ex1
cc ex1.c -o ex1
</pre>
<p>Your computer may use a slightly different command, but the end result should be
a file named <tt class="docutils literal">ex1</tt> that you can run.</p>
<div class="section" id="what-you-should-see">
<h1>What You Should See</h1>
<p>You can now run the program and see the output.</p>
<pre class="literal-block">
$ ./ex1
Hello world.
</pre>
<p>If you don't then go back and fix it.</p>
</div>
<div class="section" id="how-to-break-it">
<h1>How To Break It</h1>
<p>In this book I'm going to have a small section for each program on how to
break the program. I'll have you do odd things to the programs, run them
in weird ways, or change code so that you can see crashes and compiler errors.</p>
<p>For this program, rebuild it with all compiler warnings on:</p>
<pre class="literal-block">
$ rm ex1
$ CFLAGS="-Wall" make ex1
cc -Wall ex1.c -o ex1
ex1.c: In function 'main':
ex1.c:3: warning: implicit declaration of function 'puts'
$ ./ex1
Hello world.
$
</pre>
<p>Now you are getting a warning that says the function "puts" is implicitly declared.
The C compiler is smart enough to figure out what you want, but you should be
getting rid of all compiler warnings when you can. How you do this is add the
following line to the top of <tt class="docutils literal">ex1.c</tt> and recompile:</p>
<pre class="literal-block">
#include <stdio.h>
</pre>
<p>Now do the make again like you just did and you'll see the warning go away.</p>
</div>
<div class="section" id="extra-credit">
<h1>Extra Credit</h1>
<ul class="simple">
<li>Open the <tt class="docutils literal">ex1</tt> file in your text editor and change or delete random parts. Try running it and see what happens.</li>
<li>Print out 5 more lines of text or something more complex than hello world.</li>
<li>Run <tt class="docutils literal">man 3 puts</tt> and read about this function and many others.</li>
</ul>
</div>
<!-- RST ENDS -->
</div><!-- /#main -->
<div class='ad-deck gold' id="footer">
<ul class='retailers clearfix'>
<li>
<a href='http://learnpythonthehardway.org/'>
<div class='retailer-name'>Interested In Python?</div>
<div class='book-type'>Python is also a great language.</div>
<div class='book-price'>Learn Python The Hard Way</div>
</a>
</li>
<li>
<a href='http://learnrubythehardway.org/book/'>
<div class='retailer-name'>Interested In Ruby?</div>
<div class='book-type'>Ruby is also a great language.</div>
<div class='book-price'>Learn Ruby The Hard Way</div>
</a>
</li>
</ul><!-- /.places -->
</div><!-- /#ad-deck -->
<script src="./javascripts/jquery.js"></script>
<script src="./index.js"></script>
<script src="https://paydiv.io/static/jzed.js"></script>
<script src="./javascripts/app.js"></script>
</body>
</html>