<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Multiple source files and headers</title>
		<link>http://www.allegro.cc/forums/view/590857</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 05 Apr 2007 06:25:29 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have two .cpp files and one .h file in my current project, here&#39;s the source:</p><p>main.cpp
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/***********************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Basic Map Editor    *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Kelly Crawford      *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * 2 April 2007        *</span></td></tr><tr><td class="number">5</td><td><span class="c"> ***********************/</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="p">#include &lt;allegro.h&gt;  </span></td></tr><tr><td class="number">8</td><td><span class="k1">extern</span> <span class="s">"C"</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>       <span class="p">#include &lt;agup.h&gt;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td><span class="p">#include "dialog.h"</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> </td></tr><tr><td class="number">16</td><td><span class="k2">{</span></td></tr><tr><td class="number">17</td><td>    <span class="c">// initialize allegro</span></td></tr><tr><td class="number">18</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>  </td></tr><tr><td class="number">24</td><td>  agup_init<span class="k2">(</span>abeos_theme<span class="k2">)</span><span class="k2">;</span> <span class="c">// initialize agup</span></td></tr><tr><td class="number">25</td><td>  </td></tr><tr><td class="number">26</td><td>    <a href="http://www.allegro.cc/manual/do_dialog" target="_blank"><span class="a">do_dialog</span></a><span class="k2">(</span>the_dialog, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// start dialog</span></td></tr><tr><td class="number">27</td><td>  agup_shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// release dialog</span></td></tr><tr><td class="number">28</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td><span class="k2">}</span></td></tr><tr><td class="number">30</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

menu.cpp
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/**********************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Main Menu Source   *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Kelly Crawford     *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * 4 April 2007       *</span></td></tr><tr><td class="number">5</td><td><span class="c"> **********************/</span></td></tr><tr><td class="number">6</td><td> </td></tr><tr><td class="number">7</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">8</td><td><span class="k1">extern</span> <span class="s">"C"</span><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>       <span class="p">#include &lt;agup.h&gt;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td><span class="p">#include "dialog.h"</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">int</span> NewMap<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>    the_dialog<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>.flags <span class="k3">=</span> D_GOTFOCUS<span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

dialog.h
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="p">#ifndef DIALOG_INF_H</span></td></tr><tr><td class="number">3</td><td><span class="p">#define DIALOG_INF_H</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">int</span> NewMap<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>   <span class="c">/*   (text)    (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">10</td><td>      <span class="k2">{</span> <span class="s">"&amp;New"</span>,    NewMap,  NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">11</td><td>      <span class="k2">{</span> <span class="s">"&amp;Load"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">12</td><td>      <span class="k2">{</span> <span class="s">"&amp;Save"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">13</td><td>      <span class="k2">{</span> <span class="s">""</span>,        NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">14</td><td>      <span class="k2">{</span> <span class="s">"&amp;Quit"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">18</td><td><span class="k2">{</span></td></tr><tr><td class="number">19</td><td>   <span class="c">/*   (text)       (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">20</td><td>      <span class="k2">{</span> <span class="s">"&amp;Resize"</span>,    NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">21</td><td>      <span class="k2">{</span> <span class="s">"&amp;Tileset"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">22</td><td>      <span class="k2">{</span> <span class="s">"&amp;Name"</span>,      NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">23</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> about_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">26</td><td><span class="k2">{</span></td></tr><tr><td class="number">27</td><td>   <span class="c">/*   (text)      (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">28</td><td>      <span class="k2">{</span> <span class="s">"&amp;About"</span>,    NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">29</td><td>      <span class="k2">{</span> <span class="s">"&amp;Help"</span>,     NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">30</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>&#160;</td></tr><tr><td class="number">32</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> main_menu<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">33</td><td><span class="k2">{</span></td></tr><tr><td class="number">34</td><td>   <span class="c">/*   (text)     (proc)   (child)         (flags)    (dp) */</span></td></tr><tr><td class="number">35</td><td>      <span class="k2">{</span> <span class="s">"&amp;File"</span>,    NULL,    file_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">36</td><td>      <span class="k2">{</span> <span class="s">"&amp;Edit"</span>,    NULL,    edit_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">37</td><td>      <span class="k2">{</span> <span class="s">"&amp;About"</span>,   NULL,    about_child,    <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">38</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td><a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> the_dialog<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> </td></tr><tr><td class="number">41</td><td><span class="k2">{</span></td></tr><tr><td class="number">42</td><td>    <span class="c">/* (dialog proc)         (x)   (y)   (w)   (h)  (fg)  (bg) (key) (flags)     (d1) (d2)    (dp)          (dp2)       (dp3) */</span></td></tr><tr><td class="number">43</td><td>                                                                                                             </td></tr><tr><td class="number">44</td><td>    <span class="k2">{</span>  d_agup_clear_proc,     <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span>,</td></tr><tr><td class="number">45</td><td>    </td></tr><tr><td class="number">46</td><td>    <span class="k2">{</span>  d_agup_menu_proc,      <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      main_menu,    NULL,       NULL  <span class="k2">}</span>,    </td></tr><tr><td class="number">47</td><td>    </td></tr><tr><td class="number">48</td><td>    <span class="k2">{</span>  d_agup_box_proc,       <span class="n">50</span>,   <span class="n">50</span>,   <span class="n">200</span>,  <span class="n">200</span>, <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    D_HIDDEN,   <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span>,    </td></tr><tr><td class="number">49</td><td>    </td></tr><tr><td class="number">50</td><td>    <span class="k2">{</span>  NULL,                  <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span></td></tr><tr><td class="number">51</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>

It SHOULD compile right, right? Except I&#39;m getting errors that say all of the menus and the_dialog are being declared multiple times. Shouldn&#39;t the lines:</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#ifndef DIALOG_INF_H</span>
<span class="p">#define DIALOG_INF_H</span>
</pre></div></div><p>

prevent this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Wed, 04 Apr 2007 05:21:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
all of the menus and the_dialog are being declared multiple times.
</p></div></div><p>
They have to be declared in a .cpp file.  Include guards can guard against some things, but not this.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 04 Apr 2007 05:39:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How do I do that, though?</p><p>Now I have:</p><p>dialog.h
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#ifndef DIALOG_INF_H</span>
<span class="p">#define DIALOG_INF_H</span>

<span class="k1">int</span> NewMap<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>

<a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> about_child<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> main_menu<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">;</span>

<a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> the_dialog<span class="k2">[</span><span class="n">4</span><span class="k2">]</span><span class="k2">;</span>

<span class="p">#endif</span>
</pre></div></div><p>

and the dialog.cpp file:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/************************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Dialog and Menu Src  *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Kelly Crawford       *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * 4 April 2007         *</span></td></tr><tr><td class="number">5</td><td><span class="c"> ************************/</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="p">#include "dialog.h"</span></td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>file_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">10</td><td><span class="k2">{</span></td></tr><tr><td class="number">11</td><td>   <span class="c">/*   (text)    (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">12</td><td>      <span class="k2">{</span> <span class="s">"&amp;New"</span>,    NewMap,  NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">13</td><td>      <span class="k2">{</span> <span class="s">"&amp;Load"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">14</td><td>      <span class="k2">{</span> <span class="s">"&amp;Save"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">15</td><td>      <span class="k2">{</span> <span class="s">""</span>,        NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">16</td><td>      <span class="k2">{</span> <span class="s">"&amp;Quit"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">17</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td>edit_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">20</td><td><span class="k2">{</span></td></tr><tr><td class="number">21</td><td>   <span class="c">/*   (text)       (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">22</td><td>      <span class="k2">{</span> <span class="s">"&amp;Resize"</span>,    NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">23</td><td>      <span class="k2">{</span> <span class="s">"&amp;Tileset"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">24</td><td>      <span class="k2">{</span> <span class="s">"&amp;Name"</span>,      NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>about_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">28</td><td><span class="k2">{</span></td></tr><tr><td class="number">29</td><td>   <span class="c">/*   (text)      (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">30</td><td>      <span class="k2">{</span> <span class="s">"&amp;About"</span>,    NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">31</td><td>      <span class="k2">{</span> <span class="s">"&amp;Help"</span>,     NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">32</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td>main_menu<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">35</td><td><span class="k2">{</span></td></tr><tr><td class="number">36</td><td>   <span class="c">/*   (text)     (proc)   (child)         (flags)    (dp) */</span></td></tr><tr><td class="number">37</td><td>      <span class="k2">{</span> <span class="s">"&amp;File"</span>,    NULL,    file_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">38</td><td>      <span class="k2">{</span> <span class="s">"&amp;Edit"</span>,    NULL,    edit_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">39</td><td>      <span class="k2">{</span> <span class="s">"&amp;About"</span>,   NULL,    about_child,    <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">40</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td>the_dialog<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> </td></tr><tr><td class="number">43</td><td><span class="k2">{</span></td></tr><tr><td class="number">44</td><td>    <span class="c">/* (dialog proc)         (x)   (y)   (w)   (h)  (fg)  (bg) (key) (flags)     (d1) (d2)    (dp)          (dp2)       (dp3) */</span></td></tr><tr><td class="number">45</td><td>                                                                                                             </td></tr><tr><td class="number">46</td><td>    <span class="k2">{</span>  d_agup_clear_proc,     <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span>,</td></tr><tr><td class="number">47</td><td>    </td></tr><tr><td class="number">48</td><td>    <span class="k2">{</span>  d_agup_menu_proc,      <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      main_menu,    NULL,       NULL  <span class="k2">}</span>,    </td></tr><tr><td class="number">49</td><td>    </td></tr><tr><td class="number">50</td><td>    <span class="k2">{</span>  d_agup_box_proc,       <span class="n">50</span>,   <span class="n">50</span>,   <span class="n">200</span>,  <span class="n">200</span>, <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    D_HIDDEN,   <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span>,    </td></tr><tr><td class="number">51</td><td>    </td></tr><tr><td class="number">52</td><td>    <span class="k2">{</span>  NULL,                  <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span></td></tr><tr><td class="number">53</td><td><span class="k2">}</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

The other two .cpp files (menu.cpp and main.cpp) are unmodified, but I still get the same errors.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Wed, 04 Apr 2007 05:46:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Add the word &#39;extern&#39; to the variable definitions in your header files.
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span>
<span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">;</span>
<span class="c">// etc ...</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Wed, 04 Apr 2007 06:41:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Doesn&#39;t that also mean adding the type identifier to the .cpp file?
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> <span class="k3">=</span> ...
<a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> ...
<span class="c">//etc ...</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kibiz0r)</author>
		<pubDate>Wed, 04 Apr 2007 13:41:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="n">5</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// incorrect</span>
<span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// incorrect</span>
</pre></div></div><p>
</p></div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// correct</span>
<span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span> <span class="c">// correct</span>
</pre></div></div><p>

</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Doesn&#39;t that also mean adding the type identifier to the .cpp file?</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> <span class="k3">=</span> ...
<a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> ...
<span class="c">//etc ...</span>
</pre></div></div><p>
</p></div></div><p>

The declaration is made in <b>one</b> of the .cpp files, and all the others include the .h file that has the <tt>extern</tt> definitions.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Wed, 04 Apr 2007 16:37:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">LennyLen said:</div><div class="quote"><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
extern MENU file_child[5]; // incorrect<br />extern MENU edit_child[3]; // incorrect
</p></div></div><p>
extern MENU file_child[]; // correct<br />extern MENU edit_child[]; // correct
</p></div></div><p>
The former is perfectly correct (as is the latter). Putting the values like that even helps the compiler, in some situations.</p><p>That said, you generally don&#39;t put the size of the array in MENU or DIALOG arrays, since they&#39;re NULL terminated anyway, it makes increasing or decreasing the size easier, and the benefits aren&#39;t too useful when dealing with them. There&#39;s nothing wrong with it of course, it&#39;s just not something I see done.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Wed, 04 Apr 2007 16:44:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The former is perfectly correct (as is the latter). Putting the values like that even helps the compiler, in some situations.
</p></div></div><p>

Oh? I thought it counted as a multiple declaration if more than one file includes that header?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Wed, 04 Apr 2007 16:45:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Not as long as it&#39;s declared extern. Putting in the array size just lets the compiler know how big the array is (without it, things like sizeof(file_child) won&#39;t work).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Wed, 04 Apr 2007 16:57:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I wrote about this about a week ago... <a href="http://www.allegro.cc/forums/thread/590704/661297#target">Read up!</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Wed, 04 Apr 2007 19:31:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m still a little bit confused, as I&#39;ve never used extern before. I get it, but it&#39;s still not working. </p><p>main.cpp has remained unchanged.</p><p>dialog.h is:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/*************************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Dialog + Menu Header  *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Kelly Crawford        *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * 4 April 2007          *</span></td></tr><tr><td class="number">5</td><td><span class="c"> *************************/</span></td></tr><tr><td class="number">6</td><td> </td></tr><tr><td class="number">7</td><td><span class="p">#ifndef DIALOG_INF_H</span></td></tr><tr><td class="number">8</td><td><span class="p">#define DIALOG_INF_H</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="k1">extern</span> <span class="k1">int</span> NewMap<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> the_dialog<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> main_menu<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> about_child<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>

and dialog.cpp is:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/************************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Dialog and Menu Src  *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Kelly Crawford       *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * 4 April 2007         *</span></td></tr><tr><td class="number">5</td><td><span class="c"> ************************/</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">8</td><td><span class="k1">extern</span> <span class="s">"C"</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>       <span class="p">#include &lt;agup.h&gt;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="p">#include "dialog.h"</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="c">// menu information</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> main_menu<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">17</td><td><span class="k2">{</span></td></tr><tr><td class="number">18</td><td>   <span class="c">/*   (text)     (proc)   (child)         (flags)    (dp) */</span></td></tr><tr><td class="number">19</td><td>      <span class="k2">{</span> <span class="s">"&amp;File"</span>,    NULL,    file_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">20</td><td>      <span class="k2">{</span> <span class="s">"&amp;Edit"</span>,    NULL,    edit_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">21</td><td>      <span class="k2">{</span> <span class="s">"&amp;About"</span>,   NULL,    about_child,    <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">22</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">26</td><td><span class="k2">{</span></td></tr><tr><td class="number">27</td><td>   <span class="c">/*   (text)    (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">28</td><td>      <span class="k2">{</span> <span class="s">"&amp;New"</span>,    NewMap,  NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">29</td><td>      <span class="k2">{</span> <span class="s">"&amp;Load"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">30</td><td>      <span class="k2">{</span> <span class="s">"&amp;Save"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">31</td><td>      <span class="k2">{</span> <span class="s">""</span>,        NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">32</td><td>      <span class="k2">{</span> <span class="s">"&amp;Quit"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">33</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">37</td><td><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>   <span class="c">/*   (text)       (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">39</td><td>      <span class="k2">{</span> <span class="s">"&amp;Resize"</span>,    NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">40</td><td>      <span class="k2">{</span> <span class="s">"&amp;Tileset"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">41</td><td>      <span class="k2">{</span> <span class="s">"&amp;Name"</span>,      NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">42</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> about_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">46</td><td><span class="k2">{</span></td></tr><tr><td class="number">47</td><td>   <span class="c">/*   (text)      (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">48</td><td>      <span class="k2">{</span> <span class="s">"&amp;About"</span>,    NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">49</td><td>      <span class="k2">{</span> <span class="s">"&amp;Help"</span>,     NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">50</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">53</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">54</td><td><span class="c">// Dialog information</span></td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td><a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> the_dialog<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> </td></tr><tr><td class="number">57</td><td><span class="k2">{</span></td></tr><tr><td class="number">58</td><td>    <span class="c">/* (dialog proc)         (x)   (y)   (w)   (h)  (fg)  (bg) (key) (flags)     (d1) (d2)    (dp)          (dp2)       (dp3) */</span></td></tr><tr><td class="number">59</td><td>                                                                                                             </td></tr><tr><td class="number">60</td><td>    <span class="k2">{</span>  d_agup_clear_proc,     <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span>,</td></tr><tr><td class="number">61</td><td>    </td></tr><tr><td class="number">62</td><td>    <span class="k2">{</span>  d_agup_menu_proc,      <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      main_menu,    NULL,       NULL  <span class="k2">}</span>,    </td></tr><tr><td class="number">63</td><td>    </td></tr><tr><td class="number">64</td><td>    <span class="k2">{</span>  d_agup_box_proc,       <span class="n">50</span>,   <span class="n">50</span>,   <span class="n">200</span>,  <span class="n">200</span>, <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    D_HIDDEN,   <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span>,    </td></tr><tr><td class="number">65</td><td>    </td></tr><tr><td class="number">66</td><td>    <span class="k2">{</span>  NULL,                  <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span></td></tr><tr><td class="number">67</td><td><span class="k2">}</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

And yet I am still getting multiple definition errors. </p><p>Also, should I include allegro.h and agup.h in all the .cpp files, or just in the dialog.h, since dialog.h is included in all the .cpp files, doesn&#39;t that mean allegro is too? Or would it be better form to just include it in all the files it&#39;s used in, even if it was already included by dialog.h?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Thu, 05 Apr 2007 03:19:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can include allegro.h and agup.h in as many or as few places as you would like, thats the beauty of headers.</p><div class="quote_container"><div class="title">Kelly said:</div><div class="quote"><p>

I am still getting multiple definition errors.
</p></div></div><p>
I can&#39;t see offhand what else is wrong, here are a few comments on stuff though:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">extern</span> <span class="k1">int</span> NewMap<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
Its not really important, but <i>extern</i> is assumed for all function definitions.  If you wanted to sound smart in front of C geeks you&#39;d want to drop the explicit usage of the word here.</p><p>You also never implement the NewMap function in dialog.cpp, is there reason for this?</p><p>Also IIRC your MENU lists should end with a NULL instance, like the dialog does.  Aka:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> main_menu<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span>
<span class="k2">{</span>
   <span class="c">/*   (text)     (proc)   (child)         (flags)    (dp) */</span>
      <span class="k2">{</span> <span class="s">"&amp;File"</span>,    NULL,    file_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,
      <span class="k2">{</span> <span class="s">"&amp;Edit"</span>,    NULL,    edit_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,
      <span class="k2">{</span> <span class="s">"&amp;About"</span>,   NULL,    about_child,    <span class="n">0</span>,         NULL <span class="k2">}</span>,
      <span class="k2">{</span> NULL <span class="k2">}</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

However, I can&#39;t see any multiple definition errors in your code.  Could you paste your exact compiler command and the resulting errors.  Its important that all this information is copied and pasted exactly (in all its jargony glory).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Thu, 05 Apr 2007 03:51:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>NewMap() was never implemented because I was going to write the function, but I got all these multiple definition errors and haven&#39;t gotten around to it yet. I removed the declaration from my source code for now just for less clutter while we work this out.</p><p>So once again, here is all the source + errors:</p><p>dialog.h:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/*************************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Dialog + Menu Header  *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Kelly Crawford        *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * 4 April 2007          *</span></td></tr><tr><td class="number">5</td><td><span class="c"> *************************/</span></td></tr><tr><td class="number">6</td><td> </td></tr><tr><td class="number">7</td><td><span class="p">#ifndef DIALOG_INF_H</span></td></tr><tr><td class="number">8</td><td><span class="p">#define DIALOG_INF_H</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> the_dialog<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> main_menu<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td><span class="k1">extern</span> <a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> about_child<span class="k2">[</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>

main.cpp:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/***********************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Basic Map Editor    *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Kelly Crawford      *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * 2 April 2007        *</span></td></tr><tr><td class="number">5</td><td><span class="c"> ***********************/</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="p">#include &lt;allegro.h&gt;  </span></td></tr><tr><td class="number">8</td><td><span class="k1">extern</span> <span class="s">"C"</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>       <span class="p">#include &lt;agup.h&gt;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td><span class="p">#include "dialog.h"</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> </td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>    <span class="c">// initialize allegro</span></td></tr><tr><td class="number">16</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">640</span>, <span class="n">480</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>  </td></tr><tr><td class="number">22</td><td>  agup_init<span class="k2">(</span>abeos_theme<span class="k2">)</span><span class="k2">;</span> <span class="c">// initialize agup</span></td></tr><tr><td class="number">23</td><td>  </td></tr><tr><td class="number">24</td><td>    <a href="http://www.allegro.cc/manual/do_dialog" target="_blank"><span class="a">do_dialog</span></a><span class="k2">(</span>the_dialog, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// start dialog</span></td></tr><tr><td class="number">25</td><td>  agup_shutdown<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// release dialog</span></td></tr><tr><td class="number">26</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td><span class="k2">}</span></td></tr><tr><td class="number">28</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>

dialog.cpp:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="c">/************************</span></td></tr><tr><td class="number">2</td><td><span class="c"> * Dialog and Menu Src  *</span></td></tr><tr><td class="number">3</td><td><span class="c"> * Kelly Crawford       *</span></td></tr><tr><td class="number">4</td><td><span class="c"> * 4 April 2007         *</span></td></tr><tr><td class="number">5</td><td><span class="c"> ************************/</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">8</td><td><span class="k1">extern</span> <span class="s">"C"</span> <span class="k2">{</span></td></tr><tr><td class="number">9</td><td>       <span class="p">#include &lt;agup.h&gt;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="p">#include "dialog.h"</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td><span class="c">// menu information</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> main_menu<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">17</td><td><span class="k2">{</span></td></tr><tr><td class="number">18</td><td>   <span class="c">/*   (text)     (proc)   (child)         (flags)    (dp) */</span></td></tr><tr><td class="number">19</td><td>      <span class="k2">{</span> <span class="s">"&amp;File"</span>,    NULL,    file_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">20</td><td>      <span class="k2">{</span> <span class="s">"&amp;Edit"</span>,    NULL,    edit_child,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">21</td><td>      <span class="k2">{</span> <span class="s">"&amp;About"</span>,   NULL,    about_child,    <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">22</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">24</td><td>&#160;</td></tr><tr><td class="number">25</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> file_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">26</td><td><span class="k2">{</span></td></tr><tr><td class="number">27</td><td>   <span class="c">/*   (text)    (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">28</td><td>      <span class="k2">{</span> <span class="s">"&amp;New"</span>,    NULL,  NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">29</td><td>      <span class="k2">{</span> <span class="s">"&amp;Load"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">30</td><td>      <span class="k2">{</span> <span class="s">"&amp;Save"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">31</td><td>      <span class="k2">{</span> <span class="s">""</span>,        NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">32</td><td>      <span class="k2">{</span> <span class="s">"&amp;Quit"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">33</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> edit_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">37</td><td><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>   <span class="c">/*   (text)       (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">39</td><td>      <span class="k2">{</span> <span class="s">"&amp;Resize"</span>,    NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">40</td><td>      <span class="k2">{</span> <span class="s">"&amp;Tileset"</span>,   NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">41</td><td>      <span class="k2">{</span> <span class="s">"&amp;Name"</span>,      NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">42</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">44</td><td>&#160;</td></tr><tr><td class="number">45</td><td><a href="http://www.allegro.cc/manual/MENU" target="_blank"><span class="a">MENU</span></a> about_child<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span></td></tr><tr><td class="number">46</td><td><span class="k2">{</span></td></tr><tr><td class="number">47</td><td>   <span class="c">/*   (text)      (proc)   (child)   (flags)    (dp) */</span></td></tr><tr><td class="number">48</td><td>      <span class="k2">{</span> <span class="s">"&amp;About"</span>,    NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span>,</td></tr><tr><td class="number">49</td><td>      <span class="k2">{</span> <span class="s">"&amp;Help"</span>,     NULL,    NULL,     <span class="n">0</span>,         NULL <span class="k2">}</span></td></tr><tr><td class="number">50</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">53</td><td><span class="c">//-----------------------------------------------------------------------</span></td></tr><tr><td class="number">54</td><td><span class="c">// Dialog information</span></td></tr><tr><td class="number">55</td><td>&#160;</td></tr><tr><td class="number">56</td><td><a href="http://www.allegro.cc/manual/DIALOG" target="_blank"><span class="a">DIALOG</span></a> the_dialog<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> </td></tr><tr><td class="number">57</td><td><span class="k2">{</span></td></tr><tr><td class="number">58</td><td>    <span class="c">/* (dialog proc)         (x)   (y)   (w)   (h)  (fg)  (bg) (key) (flags)     (d1) (d2)    (dp)          (dp2)       (dp3) */</span></td></tr><tr><td class="number">59</td><td>                                                                                                             </td></tr><tr><td class="number">60</td><td>    <span class="k2">{</span>  d_agup_clear_proc,     <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span>,</td></tr><tr><td class="number">61</td><td>    </td></tr><tr><td class="number">62</td><td>    <span class="k2">{</span>  d_agup_menu_proc,      <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      main_menu,    NULL,       NULL  <span class="k2">}</span>,    </td></tr><tr><td class="number">63</td><td>    </td></tr><tr><td class="number">64</td><td>    <span class="k2">{</span>  d_agup_box_proc,       <span class="n">50</span>,   <span class="n">50</span>,   <span class="n">200</span>,  <span class="n">200</span>, <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    D_HIDDEN,   <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span>,    </td></tr><tr><td class="number">65</td><td>    </td></tr><tr><td class="number">66</td><td>    <span class="k2">{</span>  NULL,                  <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,   <span class="n">0</span>,    <span class="n">0</span>,          <span class="n">0</span>,   <span class="n">0</span>,      NULL,         NULL,       NULL  <span class="k2">}</span></td></tr><tr><td class="number">67</td><td><span class="k2">}</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

And the errors:
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
multiple definition of `main_menu&#39; <br />  first defined here <br />  multiple definition of `file_child&#39; <br />  first defined here <br />  multiple definition of `edit_child&#39; <br />  first defined here <br />  multiple definition of `about_child&#39; <br />  first defined here <br />  multiple definition of `the_dialog&#39; <br />  first defined here <br />  ld returned 1 exit status <br />  [Build Error]  [guistuff.exe] Error 1
</p></div></div><p>

Usually, when I double click an error in Dev-Cpp, it highlights the line where the error occurs. Unfortunately it is not taking me to the first definitions.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Thu, 05 Apr 2007 04:02:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Unfortunately it is not taking me to the first definitions.
</p></div></div><p>
Yes this is because it does not know where they are.  Did you do a full recompile?</p><p>Also, the compile command itself would be helpful, you can get it by going to the &quot;Compile Log&quot; tab and selecting everything in that textbox.</p><p>**<br />To do a full recompile click this button:</p><p><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/0/9/091585dcc7c9efd0b2529331ad4dd0d5.png" alt="591742" width="200" height="200" /></p><p>You can also hit control + F11.<br /><sub>

** edited in later
</sub>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Thu, 05 Apr 2007 04:12:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><img src="http://www.allegro.cc/forums/smileys/embarassed.gif" alt=":-[" /> I can&#39;t believe I didn&#39;t rebuild the project. It works now. </p><p>Thanks for the help~
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (moon_rabbits)</author>
		<pubDate>Thu, 05 Apr 2007 04:27:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Its not really important, but extern is assumed for all function definitions.
</p></div></div><p>

assumed for function <i>declarations</i></p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
If you wanted to sound smart in front of C geeks you&#39;d want to drop the explicit usage of the word here.
</p></div></div><p>

<img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Thu, 05 Apr 2007 05:54:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
declarations
</p></div></div><p>
Ah right, I always mix up those two words:P
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Thu, 05 Apr 2007 06:25:29 +0000</pubDate>
	</item>
</rss>
