<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?action=history&amp;feed=atom&amp;title=INFO517-cours7</id>
	<title>INFO517-cours7 - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?action=history&amp;feed=atom&amp;title=INFO517-cours7"/>
	<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;action=history"/>
	<updated>2026-05-21T06:25:11Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=3283&amp;oldid=prev</id>
		<title>Lvaux : /* Makefile */  typo</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=3283&amp;oldid=prev"/>
		<updated>2008-11-22T16:36:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Makefile : &lt;/span&gt;  typo&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 22 novembre 2008 à 16:36&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 328 :&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 328 :&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;quelque chose de similaire serait fait automatiquement par &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;quelque chose de similaire serait fait automatiquement par &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La syntaxe des &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;s est assez riche et &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;puissance&lt;/del&gt;: &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La syntaxe des &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;s est assez riche et &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;puissante&lt;/ins&gt;: &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;la lecture de la documentation est conseillée. On utilisera tout ça en TP.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;la lecture de la documentation est conseillée. On utilisera tout ça en TP.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lvaux</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=3282&amp;oldid=prev</id>
		<title>Lvaux : /* Makefile */</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=3282&amp;oldid=prev"/>
		<updated>2008-11-22T16:35:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Makefile&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 22 novembre 2008 à 16:35&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 324 :&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 324 :&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;est faite automatiquement (et utilise les variables &amp;lt;code&amp;gt;CC&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;est faite automatiquement (et utilise les variables &amp;lt;code&amp;gt;CC&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;et &amp;lt;code&amp;gt;CFLAGS&amp;lt;/code&amp;gt;): ceci correspond à des règles par défaut de &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;et &amp;lt;code&amp;gt;CFLAGS&amp;lt;/code&amp;gt;): ceci correspond à des règles par défaut de &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; De la même manière, la commande après la ligne &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;test_pile: ...&amp;lt;/code&amp;gt; est facultative: &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;quelque chose de similaire serait fait automatiquement par &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La syntaxe des &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;s est assez riche et puissance: &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La syntaxe des &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;s est assez riche et puissance: &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lvaux</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=3281&amp;oldid=prev</id>
		<title>Lvaux : /* Makefile */</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=3281&amp;oldid=prev"/>
		<updated>2008-11-22T16:32:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Makefile&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 22 novembre 2008 à 16:32&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 298 :&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 298 :&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  CC=gcc&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  CC=gcc&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  CFLAGS=-Wall -pedantic&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  CFLAGS=-Wall -pedantic&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  all: test_pile&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  all: test_pile&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  test_pile: pile.o ligne.o test_pile.o&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  test_pile: pile.o ligne.o test_pile.o&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	$(CC) $(CFLAGS) -o test_pile $^&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	$(CC) $(CFLAGS) -o test_pile $^&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-added&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  clean:&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  clean:&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	rm -f pile.o ligne.o test_pile.o test_pile &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  	rm -f pile.o ligne.o test_pile.o test_pile &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lvaux</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=3071&amp;oldid=prev</id>
		<title>Lvaux le 18 novembre 2008 à 22:57</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=3071&amp;oldid=prev"/>
		<updated>2008-11-18T22:57:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;fr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Version précédente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version du 18 novembre 2008 à 22:57&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ligne 1 :&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Séance 7 du Cours-TD de [[INFO517|Programmation C]].&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Structures récursives == &lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Structures récursives == &lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lvaux</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=2866&amp;oldid=prev</id>
		<title>Lvaux : Création de la page</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=INFO517-cours7&amp;diff=2866&amp;oldid=prev"/>
		<updated>2008-11-10T17:39:01Z</updated>

		<summary type="html">&lt;p&gt;Création de la page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Structures récursives == &lt;br /&gt;
&lt;br /&gt;
Quand on veut déclarer un type récursif (ou auto-référentiel), &lt;br /&gt;
la syntaxe suivante est rejetée: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
	int data ;&lt;br /&gt;
	bloc_t *suivant ;&lt;br /&gt;
} bloc_t ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Le problème est que le type &amp;lt;code&amp;gt;bloc_t&amp;lt;/code&amp;gt; n&amp;#039;est pas encore défini&lt;br /&gt;
au moment où on écrit la structure.&lt;br /&gt;
&lt;br /&gt;
Il faut utiliser la syntaxe plus précise:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
typedef struct bloc_rec_t {&lt;br /&gt;
	int data ;&lt;br /&gt;
	struct bloc_rec_t *suivant ;&lt;br /&gt;
} bloc_t ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;idée est que &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
struct bloc_rec_t {&lt;br /&gt;
	int data ;&lt;br /&gt;
	struct bloc_rec_t *suivant ;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Déclare un nouveau nom de structure &amp;lt;code&amp;gt;bloc_rec_t&amp;lt;/code&amp;gt;. &lt;br /&gt;
Et alors &amp;lt;code&amp;gt;struct bloc_rec_t&amp;lt;/code&amp;gt; est un type. &lt;br /&gt;
&lt;br /&gt;
La version précédente revient à:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
struct bloc_rec_t {&lt;br /&gt;
	int data ;&lt;br /&gt;
	struct bloc_rec_t *suivant ;&lt;br /&gt;
} ;&lt;br /&gt;
typedef struct bloc_rec_t bloc_t ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour fixer les idées, on peut revenir au type des vecteurs vu plus haut,&lt;br /&gt;
en utilisant la syntaxe de déclaration des structures: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
struct vect_t {&lt;br /&gt;
	double x ; &lt;br /&gt;
	double y ;&lt;br /&gt;
} ;&lt;br /&gt;
&lt;br /&gt;
int main () {&lt;br /&gt;
	struct vect_t v = { 1, 2 } ; &lt;br /&gt;
	printf(&amp;quot;(%4.2f,%4.2f)\n&amp;quot;,v.x,v.y) ; &lt;br /&gt;
	return 0 ;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La déclaration &amp;lt;code&amp;gt;struct vect_t v&amp;lt;/code&amp;gt; &lt;br /&gt;
dit que &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; est une variable de type &lt;br /&gt;
&amp;lt;code&amp;gt;struct vect_t&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
La définition &amp;lt;code&amp;gt;struct vect_t v = { 1, 2 } ;&amp;lt;/code&amp;gt; &lt;br /&gt;
initialise &amp;lt;code&amp;gt;v&amp;lt;/code&amp;gt; avec &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; dans le premier champ (&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;)&lt;br /&gt;
et &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; dans le second (&amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
On utilisera souvent des pointeurs vers des structures.&lt;br /&gt;
Si &amp;lt;code&amp;gt;type_t&amp;lt;/code&amp;gt; est le type d&amp;#039;une&lt;br /&gt;
structure qui comporte un champ &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;, &lt;br /&gt;
alors on voudra souvent considérer un pointeur &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
	type_t *p;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
et faire référence au champ &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; &lt;br /&gt;
de la structure pointée par &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt;: &lt;br /&gt;
&amp;lt;code&amp;gt;(*p).x&amp;lt;/code&amp;gt;.&lt;br /&gt;
C&amp;#039;est tellement courant qu&amp;#039;il existe une notation abrégée pour cette opération: &lt;br /&gt;
&amp;lt;code&amp;gt;p-&amp;gt;x&amp;lt;/code&amp;gt;.&lt;br /&gt;
On pourra ainsi écrire le programme suivant:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
struct vect_t {&lt;br /&gt;
	double x ; &lt;br /&gt;
	double y ;&lt;br /&gt;
} ;&lt;br /&gt;
&lt;br /&gt;
int main () {&lt;br /&gt;
	struct vect_t v = { 1, 2 } ; &lt;br /&gt;
	struct vect_t *p = &amp;amp;v ; &lt;br /&gt;
	printf(&amp;quot;(%4.2f,%4.2f)\n&amp;quot;,p-&amp;gt;x,p-&amp;gt;y) ; &lt;br /&gt;
	return 0 ;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
qui fait la même chose que le précédent.&lt;br /&gt;
&lt;br /&gt;
Attention au fait que la structure récursive utilise un pointeur vers elle-même.&lt;br /&gt;
En effet, on ne peut pas faire directement:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
struct bloc_rec_t {&lt;br /&gt;
	int data ;&lt;br /&gt;
	struct bloc_rec_t suivant ;&lt;br /&gt;
} ;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Un champ dans une structure ne peut-être du même type (souvenez-vous que la taille d&amp;#039;un &amp;lt;code&amp;gt;struct&amp;lt;/code&amp;gt; est la somme&lt;br /&gt;
des tailles de ses champs).&lt;br /&gt;
&lt;br /&gt;
== Un exemple complet avec une pile == &lt;br /&gt;
&lt;br /&gt;
On construit un programme qui lit des lignes sur son entrée,&lt;br /&gt;
et les affiches de la dernière à la première.&lt;br /&gt;
&lt;br /&gt;
D&amp;#039;abord, on rappelle la fonction &amp;lt;code&amp;gt;lit_ligne&amp;lt;/code&amp;gt; déjà &lt;br /&gt;
vu plus haut, qu&amp;#039;on met dans une bibliothèque minimaliste:&lt;br /&gt;
&lt;br /&gt;
En-têtes &amp;lt;tt&amp;gt;liste.h&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef LIGNE_H&lt;br /&gt;
#define LIGNE_H&lt;br /&gt;
&lt;br /&gt;
/* On alloue par blocs de taille LIGNE_MORCEAU. */&lt;br /&gt;
#define LIGNE_MORCEAU 1024&lt;br /&gt;
&lt;br /&gt;
/* Lit une ligne en entrée _quelle que soit sa taille_&lt;br /&gt;
 * et la stocke dans *p (p est un pointeur sur une chaîne).&lt;br /&gt;
 * Renvoie le nombre de caractère lus (-1 en cas d&amp;#039;erreur). */&lt;br /&gt;
&lt;br /&gt;
int lit_ligne (char **p) ;&lt;br /&gt;
&lt;br /&gt;
#endif /* #ifndef LIGNE_H */&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code &amp;lt;tt&amp;gt;ligne.c&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;ligne.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int lit_ligne (char **p) {&lt;br /&gt;
	char c ;&lt;br /&gt;
	char *s ;&lt;br /&gt;
	int pos, blocs, i ;&lt;br /&gt;
&lt;br /&gt;
	/* La position courante dans la chaîne est i+LIGNE_MORCEAU*blocs. */&lt;br /&gt;
	pos = blocs = i = 0 ;&lt;br /&gt;
&lt;br /&gt;
	/* On alloue le premier morceau. */&lt;br /&gt;
	s = malloc ((++blocs)*LIGNE_MORCEAU*sizeof(char)) ; &lt;br /&gt;
	if (s == NULL) return -1 ;&lt;br /&gt;
&lt;br /&gt;
	while ((c=getchar())!=EOF &amp;amp;&amp;amp; c!=&amp;#039;\n&amp;#039;) {&lt;br /&gt;
		s[pos] = c ; &lt;br /&gt;
		if (i==LIGNE_MORCEAU-1) { /* on déborderait en faisant ++i, donc on&lt;br /&gt;
				       alloue plus de mémoire */&lt;br /&gt;
			if ((s=realloc(s,(++blocs)*LIGNE_MORCEAU*sizeof(char))) == NULL) {&lt;br /&gt;
				return -1 ; /* plus de mémoire disponible: on quitte */&lt;br /&gt;
			}&lt;br /&gt;
			i=0 ;&lt;br /&gt;
		} else {&lt;br /&gt;
			++i;&lt;br /&gt;
		}&lt;br /&gt;
		++pos ; &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/* si c == &amp;#039;\n&amp;#039; il faut l&amp;#039;ajouter */&lt;br /&gt;
	&lt;br /&gt;
	if (c==&amp;#039;\n&amp;#039;) {&lt;br /&gt;
		s[pos] = c ; &lt;br /&gt;
		/* on pourrait déborder en ajoutant le &amp;#039;\0&amp;#039;: on gère ça */&lt;br /&gt;
		if (i==LIGNE_MORCEAU-1) { &lt;br /&gt;
			if ((s=realloc(s,(pos+1)*sizeof(char))) == NULL) &lt;br /&gt;
				return -1 ; /* plus de mémoire disponible: on quitte */ &lt;br /&gt;
		}&lt;br /&gt;
		++pos ; &lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	s[pos]=&amp;#039;\0&amp;#039; ;&lt;br /&gt;
	*p=s ;&lt;br /&gt;
	return pos ;&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite, on donne un type pour les piles de chaînes de caractères, &lt;br /&gt;
et les fonctions usuelles.&lt;br /&gt;
&lt;br /&gt;
En-têtes &amp;lt;tt&amp;gt;pile.h&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef PILE_H&lt;br /&gt;
#define PILE_H&lt;br /&gt;
&lt;br /&gt;
typedef char data_t ;&lt;br /&gt;
&lt;br /&gt;
typedef struct bloc_rec_t {&lt;br /&gt;
	data_t *data ; &lt;br /&gt;
	struct bloc_rec_t *suivant ; &lt;br /&gt;
} bloc_t ;&lt;br /&gt;
&lt;br /&gt;
typedef bloc_t *pile_t ;&lt;br /&gt;
&lt;br /&gt;
/* Renvoie une pile vide */&lt;br /&gt;
pile_t pile_cree () ;&lt;br /&gt;
&lt;br /&gt;
/* Teste si une pile est vide (1 si vide, 0 sinon) */&lt;br /&gt;
int pile_vide (pile_t p) ; &lt;br /&gt;
&lt;br /&gt;
/* Empile la donnée d sur la pile *p. &lt;br /&gt;
 * En cas de succès, renvoie la nouvelle valeur de *p. &lt;br /&gt;
 * Sinon, renvoie NULL (et alors *p est inchangé). */&lt;br /&gt;
pile_t pile_empile (pile_t *p, data_t *d) ; &lt;br /&gt;
&lt;br /&gt;
/* Dépile la donnée au sommet de la pile.&lt;br /&gt;
 * Renvoie NULL en cas d&amp;#039;échec (pile vide). */&lt;br /&gt;
data_t *pile_depile (pile_t *p) ; &lt;br /&gt;
&lt;br /&gt;
#endif &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code &amp;lt;tt&amp;gt;pile.c&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;quot;pile.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pile_t pile_cree () {&lt;br /&gt;
	return NULL ; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int pile_vide (pile_t p) {&lt;br /&gt;
	return (p == NULL) ; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pile_t pile_empile (pile_t *p, data_t *d) {&lt;br /&gt;
	pile_t q = malloc (sizeof(bloc_t)) ;&lt;br /&gt;
	if (q != NULL) {&lt;br /&gt;
		q-&amp;gt;data = d ;&lt;br /&gt;
		q-&amp;gt;suivant = *p ;&lt;br /&gt;
		*p = q ; &lt;br /&gt;
	}&lt;br /&gt;
	return q ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
data_t *pile_depile (pile_t *p) {&lt;br /&gt;
	pile_t q = *p ;&lt;br /&gt;
	data_t *d = NULL ;&lt;br /&gt;
	if (!pile_vide(q)) {&lt;br /&gt;
		d=q-&amp;gt;data ;&lt;br /&gt;
		*p=q-&amp;gt;suivant ; &lt;br /&gt;
		free(q) ;&lt;br /&gt;
	}&lt;br /&gt;
	return d ;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le programme principal &amp;lt;tt&amp;gt;test_pile.c&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;quot;ligne.h&amp;quot; &lt;br /&gt;
#include &amp;quot;pile.h&amp;quot; &lt;br /&gt;
&lt;br /&gt;
/* Lit des lignes, puis les affiche de la dernière à la première */&lt;br /&gt;
int main () {&lt;br /&gt;
	char *l ;&lt;br /&gt;
	pile_t p = pile_cree() ; &lt;br /&gt;
	int ret ;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;Tapez des lignes\n&amp;quot;) ;&lt;br /&gt;
	while ((ret=lit_ligne(&amp;amp;l))&amp;gt;0) {&lt;br /&gt;
		pile_empile(&amp;amp;p,l) ; &lt;br /&gt;
	}&lt;br /&gt;
	if (ret&amp;lt;0) &lt;br /&gt;
		return -1 ;&lt;br /&gt;
	while(!pile_vide(p)) {&lt;br /&gt;
		l=pile_depile(&amp;amp;p) ;&lt;br /&gt;
		printf(&amp;quot;%s&amp;quot;,l) ;&lt;br /&gt;
		free(l) ; &lt;br /&gt;
	}&lt;br /&gt;
	return 0 ;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Makefile ==&lt;br /&gt;
&lt;br /&gt;
Pour compiler le tout (avec les options usuelles), il faudrait écrire &lt;br /&gt;
  $ gcc -Wall -pedantic -o test_pile test_pile.c pile.c ligne.c &lt;br /&gt;
et même, de manière plus modulaire: &lt;br /&gt;
  $ gcc -Wall -pedantic -o pile.o -c pile.c&lt;br /&gt;
  $ gcc -Wall -pedantic -o ligne.o -c ligne.c&lt;br /&gt;
  $ gcc -Wall -pedantic -o test_pile.o -c test_pile.c&lt;br /&gt;
  $ gcc -Wall -pedantic -o test_pile test_pile.o pile.o ligne.o&lt;br /&gt;
&lt;br /&gt;
Ça devient fastidieux. L&amp;#039;outil&lt;br /&gt;
&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; a été conçu pour ce genre de situation.&lt;br /&gt;
&lt;br /&gt;
On peut écrire le fichier &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;:&lt;br /&gt;
  CC=gcc&lt;br /&gt;
  CFLAGS=-Wall -pedantic&lt;br /&gt;
&lt;br /&gt;
  all: test_pile&lt;br /&gt;
&lt;br /&gt;
  test_pile: pile.o ligne.o test_pile.o&lt;br /&gt;
  	$(CC) $(CFLAGS) -o test_pile $^&lt;br /&gt;
&lt;br /&gt;
  clean:&lt;br /&gt;
  	rm -f pile.o ligne.o test_pile.o test_pile &lt;br /&gt;
et alors la commande &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; fait le nécessaire:&lt;br /&gt;
  $ make&lt;br /&gt;
  gcc -Wall -pedantic   -c -o pile.o pile.c&lt;br /&gt;
  gcc -Wall -pedantic   -c -o ligne.o ligne.c&lt;br /&gt;
  gcc -Wall -pedantic   -c -o test_pile.o test_pile.c&lt;br /&gt;
  gcc -Wall -pedantic -o test_pile test_pile.o pile.o ligne.o&lt;br /&gt;
&lt;br /&gt;
La syntaxe des &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; décrit des dépendances sous la forme:&lt;br /&gt;
  cible: dependance_1 dependance_2 ... dependance_n&lt;br /&gt;
    commande&lt;br /&gt;
c&amp;#039;est-à-dire: pour fabriquer &amp;lt;code&amp;gt;cible&amp;lt;/code&amp;gt;&lt;br /&gt;
j&amp;#039;ai besoin des fichiers &amp;lt;code&amp;gt;dependance_?&amp;lt;/code&amp;gt;&lt;br /&gt;
et j&amp;#039;appelle la commande &amp;lt;code&amp;gt;commande&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
On peut définir des variables (première ligne) et il existe des cibles &lt;br /&gt;
spéciales (&amp;lt;code&amp;gt;all&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;clean&amp;lt;/code&amp;gt;) qui ne produisent &lt;br /&gt;
pas de fichier au nom de la cible.&lt;br /&gt;
&lt;br /&gt;
Notez que la conversion des &amp;lt;code&amp;gt;*.o&amp;lt;/code&amp;gt; aux &amp;lt;code&amp;gt;*.c&amp;lt;/code&amp;gt;&lt;br /&gt;
est faite automatiquement (et utilise les variables &amp;lt;code&amp;gt;CC&amp;lt;/code&amp;gt;&lt;br /&gt;
et &amp;lt;code&amp;gt;CFLAGS&amp;lt;/code&amp;gt;): ceci correspond à des règles par défaut de &lt;br /&gt;
&amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
La syntaxe des &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;s est assez riche et puissance: &lt;br /&gt;
la lecture de la documentation est conseillée. On utilisera tout ça en TP.&lt;br /&gt;
&lt;br /&gt;
== Exercices en TD ==&lt;br /&gt;
&lt;br /&gt;
[http://www.lama.univ-savoie.fr/~vaux/ens/INFO517-TD2.pdf Feuille 2].&lt;/div&gt;</summary>
		<author><name>Lvaux</name></author>
	</entry>
</feed>