<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=2150&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-04-14T14:00:59+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2150&amp;mode</id>
<entry>
<author><name><![CDATA[Wilu88]]></name></author>
<updated>2013-04-14T14:00:59+01:00</updated>
<published>2013-04-14T14:00:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=34284#p34284</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=34284#p34284"/>
<title type="html"><![CDATA[Re: błąd podwójnego definiowania w pliczkach nagłówkowych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=34284#p34284"><![CDATA[
Ok musze odkopać ten temat bo mam podobny problem przy RC5. Kompilator burzy się że w plikach IR_Decode i LCD znajduje się podwójna definicja makr:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">../IR_DECODE/ir_decode.h:33:0: warning: &quot;PORT&quot; redefined &#91;enabled by default&#93;<br />../LCD/lcd44780.h:126:0: note: this is the location of the previous definition<br />../IR_DECODE/ir_decode.h:36:0: warning: &quot;PIN&quot; redefined &#91;enabled by default&#93;<br />../LCD/lcd44780.h:129:0: note: this is the location of the previous definition<br />../IR_DECODE/ir_decode.h:39:0: warning: &quot;DDR&quot; redefined &#91;enabled by default&#93;<br />../LCD/lcd44780.h:132:0: note: this is the location of the previous definition</div><br /><br />W pliku LCD wygląda to tak:<br /><br />[syntax=c]#define PORT(x) SPORT(x)<br />#define SPORT(x) (PORT##x)<br />// *** PIN<br />#define PIN(x) SPIN(x)<br />#define SPIN(x) (PIN##x)<br />// *** DDR<br />#define DDR(x) SDDR(x)<br />#define SDDR(x) (DDR##x)[/syntax]<br /><br />Natomiast w IR_DECODE:<br /><br />[syntax=c]#define PORT(x) XPORT(x)<br />#define XPORT(x) (PORT##x)<br />// *** PIN<br />#define PIN(x) XPIN(x)<br />#define XPIN(x) (PIN##x)<br />// *** DDR<br />#define DDR(x) XDDR(x)<br />#define XDDR(x) (DDR##x)[/syntax]<br /><br />Teraz jak sobie z tym poradzić? Bo szczerze próbowałem na różne sposoby używając #ifdef ale jakoś kiepsko :/<br /><br /><br />Ok poradziłem sobie tworząc wspólny plik nagłówkowy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=743">Wilu88</a> — 14 kwi 2013, o 14:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-01-19T14:45:53+01:00</updated>
<published>2013-01-19T14:45:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25233#p25233</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25233#p25233"/>
<title type="html"><![CDATA[Re: błąd podwójnego definiowania w pliczkach nagłówkowych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25233#p25233"><![CDATA[
Dokładnie tak.<p>Statystyki: Napisane przez Gość — 19 sty 2013, o 14:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Domanoid]]></name></author>
<updated>2013-01-19T14:39:42+01:00</updated>
<published>2013-01-19T14:39:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25232#p25232</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25232#p25232"/>
<title type="html"><![CDATA[Re: błąd podwójnego definiowania w pliczkach nagłówkowych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25232#p25232"><![CDATA[
Dzięki wielkie za szybką odpowiedź <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Rzeczywiście była mowa o common.h, ale gdzieś mi umknęła informacja że w takim przypadku można ją wykorzystać. <br />W plikach lcd44780.h i i2c_soft.h powyższe linie poprzedziłem //, czyli już nie są brane pod uwagę, a common.h wygląda tak:[syntax=c]/*<br /> * common.h<br /> *<br /> *  Created on: 19-01-2013<br /> *      Author: Jarek<br /> */<br /><br />#ifndef COMMON_H_<br />#define COMMON_H_<br /><br />// Makra upraszczające dostęp do portów<br />// *** PORT<br />#define PORT(x) XPORT(x)<br />#define XPORT(x) (PORT##x)<br />// *** PIN<br />#define PIN(x) XPIN(x)<br />#define XPIN(x) (PIN##x)<br />// *** DDR<br />#define DDR(x) XDDR(x)<br />#define XDDR(x) (DDR##x)<br /><br /><br />#endif /* COMMON_H_ */[/syntax]<br /><br />tylko jeszcze miałem przez chwilę problem. Otóż w/w pliki są w odpowiednich folderach, a plik common.h jest katalog wyżej no i nie był widziany.<br />Czy tak się robi inkludowanie plików znajdujących się katalog wyżej?<br />#include &quot;../common.h&quot;<br />działa, ale czy na pewno tak jest dobrze? (tak się to robi np. w php)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=750">Domanoid</a> — 19 sty 2013, o 14:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[staneq]]></name></author>
<updated>2013-01-19T14:07:22+01:00</updated>
<published>2013-01-19T14:07:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25224#p25224</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25224#p25224"/>
<title type="html"><![CDATA[Re: błąd podwójnego definiowania w pliczkach nagłówkowych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25224#p25224"><![CDATA[
Zawsze można takie błędy zawrzeć w dyrektywie #ifndef #endif<br />czyli np:<br /><br />w bibliotece (np do LCD)<br />[syntax=c]<br />#ifndef PORT<br />#define PORT(x,y)<br />...<br />#endif<br />[/syntax]<br /><br /><br />a w pliku common.h <br />robisz niezależną od niej definicje<br /><br />[syntax=c]#define PORT(x,y)<br />.......[/syntax]<br /><br />W ten sposób nie będziesz musiał nic usuwać z kodu biblioteki<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=770">staneq</a> — 19 sty 2013, o 14:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-01-19T13:55:37+01:00</updated>
<published>2013-01-19T13:55:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25222#p25222</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25222#p25222"/>
<title type="html"><![CDATA[Re: błąd podwójnego definiowania w pliczkach nagłówkowych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25222#p25222"><![CDATA[
Mirek w swoich video poradnikach mówił o pliku common.h, jak również w książce też o tym jest. Przenosisz tam wszystkie powtarzające się deklaracje preprocesora.....<p>Statystyki: Napisane przez Gość — 19 sty 2013, o 13:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Domanoid]]></name></author>
<updated>2013-01-19T13:37:43+01:00</updated>
<published>2013-01-19T13:37:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25221#p25221</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25221#p25221"/>
<title type="html"><![CDATA[błąd podwójnego definiowania w pliczkach nagłówkowych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2150&amp;p=25221#p25221"><![CDATA[
Hej, jako, że nie lubię mieć jakichkolwiek błędów, czy to podkreślonych na czerwono, czy też na żółto... To zadaję to pytanko <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Jak zrobić, żeby się nie powtarzały definicje w kilku plikach .h? Chodzi mi o Mirkowe przykłady z płytki. Otwieram powiedzmy taki gotowy projekt or RC5 (nr. 11 - RC5_decode). Robię swoje ustawienia portów lcd, ustawiam taktowanie procesora i sam procek przestawiam na m16.<br /><br />Podczas kompilacji wyskakują mi błędy:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">In file included from ../main.c:24:0:<br />../I2C_SOFT/i2c_soft.h:18:0: warning: &quot;PORT&quot; redefined &#91;enabled by default&#93;<br />../LCD/lcd44780.h:124:0: note: this is the location of the previous definition<br />../I2C_SOFT/i2c_soft.h:21:0: warning: &quot;PIN&quot; redefined &#91;enabled by default&#93;<br />../LCD/lcd44780.h:127:0: note: this is the location of the previous definition<br />../I2C_SOFT/i2c_soft.h:24:0: warning: &quot;DDR&quot; redefined &#91;enabled by default&#93;<br />../LCD/lcd44780.h:130:0: note: this is the location of the previous definition</div><br /><br />wiem o co chodzi, po prostu tutaj i tutaj są te same #define, ale nie mogę tego po prostu zakomentować, bo wtedy kompilator nie wie o co chodzi w kodzie.<br /><br />A w obu plikach jest prawie to samo:<br />lcd44780.h<br />[syntax=c]// Makra upraszczające dostęp do portów<br />// *** PORT<br />#define PORT(x) XPORT(x)<br />#define XPORT(x) (PORT##x)<br />// *** PIN<br />#define PIN(x) XPIN(x)<br />#define XPIN(x) (PIN##x)<br />// *** DDR<br />#define DDR(x) XDDR(x)<br />#define XDDR(x) (DDR##x)[/syntax]<br /><br />i2c_soft.h<br />[syntax=c]// Makra upraszczające dostęp do portów<br />// *** PORT<br />#define PORT(x) XPORT(x)<br />#define XPORT(x) (PORT##x)<br />// *** PIN<br />#define PIN(x) XPIN(x)<br />#define XPIN(x) (PIN##x)<br />// *** DDR<br />#define DDR(x) XDDR(x)<br />#define XDDR(x) (DDR##x)[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=750">Domanoid</a> — 19 sty 2013, o 13:37</p><hr />
]]></content>
</entry>
</feed>