<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: To, czego oczekuje kompilator</title>
	<atom:link href="http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/feed/" rel="self" type="application/rss+xml" />
	<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/</link>
	<description>Programming on (many) different levels of abstraction</description>
	<lastBuildDate>Mon, 16 Apr 2012 21:48:43 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Xion</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4986</link>
		<dc:creator>Xion</dc:creator>
		<pubDate>Thu, 04 Sep 2008 14:15:52 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4986</guid>
		<description>Przynajmniej kilka:

1) Średnik po } a przed &#039;else&#039;.
2) Średnik po } a przed &#039;while&#039; (w do-while).
3) Średnik po } w konstrukcjach typu:
[cpp]struct TFoo
{
    // ...
} /*;*/ SomeVerySpecialInstanceOfFoo;[/cpp]
4) Średnik po } w przy inicjalizacji tablic wielowymiarowych, tj.:
[cpp]int array[][2] = { { 1, 2 } /*;*/, { 3, 4 }, { 5 , 6 } };[/cpp]</description>
		<content:encoded><![CDATA[<p>Przynajmniej kilka:</p>
<p>1) Średnik po } a przed 'else'.<br />
2) Średnik po } a przed 'while' (w do-while).<br />
3) Średnik po } w konstrukcjach typu:</p>
<div class="syntax_hilite">
<div id="cpp-1">
<div class="cpp"><span style="color: #0000ff;">struct</span> TFoo<br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #ff0000;">// ...</span><br />
<span style="color: #000000;">&#125;</span> <span style="color: #ff0000; font-style: italic;">/*;*/</span> SomeVerySpecialInstanceOfFoo;</div>
</div>
</div>
<p>
4) Średnik po } w przy inicjalizacji tablic wielowymiarowych, tj.:</p>
<div class="syntax_hilite">
<div id="cpp-2">
<div class="cpp"><span style="color: #0000ff;">int</span> array<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #000000;">&#93;</span> = <span style="color: #000000;">&#123;</span> <span style="color: #000000;">&#123;</span> <span style="color: #0000dd;">1</span>, <span style="color: #0000dd;">2</span> <span style="color: #000000;">&#125;</span> <span style="color: #ff0000; font-style: italic;">/*;*/</span>, <span style="color: #000000;">&#123;</span> <span style="color: #0000dd;">3</span>, <span style="color: #0000dd;">4</span> <span style="color: #000000;">&#125;</span>, <span style="color: #000000;">&#123;</span> <span style="color: #0000dd;">5</span> , <span style="color: #0000dd;">6</span> <span style="color: #000000;">&#125;</span> <span style="color: #000000;">&#125;</span>;</div>
</div>
</div>
<p></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: noisy</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4984</link>
		<dc:creator>noisy</dc:creator>
		<pubDate>Thu, 04 Sep 2008 13:41:10 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4984</guid>
		<description>Też pamiętam jak pierszy raz zmagałem się z brakiem średnika na końcu definicji klasy...to był koszmar! :)

Po pewnym czasie zauważyłem, że w jednej książce/kursie (niepamiętam) ciekawie uczą programowania..

wg nich instrukcje sterującą if powinno się pisać tak

if(warunek)
{
   instrukcja;
}; //nie napisali tutaj nic o nadmiarowym sredniku, ale urzekl mnie on dosc znacząco

podobnie posługiwali się 

if()
{
  instrukcja;
}
else
{
  instrukcja2;
};

for(;;)
{};

while()
{};

do{}
while(); //no tutaj akurat zrozumiale! :)

w sumie, jezeli ktos sie nauczy, ze tak trzeba wstawiac sredniki, to przy definicji klasy sie juz zastanawiac nie bedzie...

jest w tym jakiś sposób...choć ja osobiście nie stawiam nadmiarowych średników.
Swoją drogą...przychodzi komuś do głowy jakaś taka sytuacja gdzie nadmiarowy średnik za jakąś parą {} może bardzo zaszkodzić?</description>
		<content:encoded><![CDATA[<p>Też pamiętam jak pierszy raz zmagałem się z brakiem średnika na końcu definicji klasy...to był koszmar! :)</p>
<p>Po pewnym czasie zauważyłem, że w jednej książce/kursie (niepamiętam) ciekawie uczą programowania..</p>
<p>wg nich instrukcje sterującą if powinno się pisać tak</p>
<p>if(warunek)<br />
{<br />
   instrukcja;<br />
}; //nie napisali tutaj nic o nadmiarowym sredniku, ale urzekl mnie on dosc znacząco</p>
<p>podobnie posługiwali się </p>
<p>if()<br />
{<br />
  instrukcja;<br />
}<br />
else<br />
{<br />
  instrukcja2;<br />
};</p>
<p>for(;;)<br />
{};</p>
<p>while()<br />
{};</p>
<p>do{}<br />
while(); //no tutaj akurat zrozumiale! :)</p>
<p>w sumie, jezeli ktos sie nauczy, ze tak trzeba wstawiac sredniki, to przy definicji klasy sie juz zastanawiac nie bedzie...</p>
<p>jest w tym jakiś sposób...choć ja osobiście nie stawiam nadmiarowych średników.<br />
Swoją drogą...przychodzi komuś do głowy jakaś taka sytuacja gdzie nadmiarowy średnik za jakąś parą {} może bardzo zaszkodzić?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Developer</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4975</link>
		<dc:creator>Developer</dc:creator>
		<pubDate>Sun, 31 Aug 2008 10:54:48 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4975</guid>
		<description>@Gynvael:
To normalne, wtedy zaczynasz poszukiwania od pierwszego komunikatu z błędem, reszta jest najczęściej konsekwencją tego pierwszego.

@Reg:
Zgadzam się! Ale to nie C++ jest z tego powodu do dupy, tylko kompilator, no i w sumie nie aż tak o razu całkiem do dupy... ;)

@CittEr:
Regedit powiedział na głos to, co inni starannie przemilczają. +P</description>
		<content:encoded><![CDATA[<p>@Gynvael:<br />
To normalne, wtedy zaczynasz poszukiwania od pierwszego komunikatu z błędem, reszta jest najczęściej konsekwencją tego pierwszego.</p>
<p>@Reg:<br />
Zgadzam się! Ale to nie C++ jest z tego powodu do dupy, tylko kompilator, no i w sumie nie aż tak o razu całkiem do dupy... ;)</p>
<p>@CittEr:<br />
Regedit powiedział na głos to, co inni starannie przemilczają. +P</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CittEr</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4945</link>
		<dc:creator>CittEr</dc:creator>
		<pubDate>Mon, 25 Aug 2008 12:02:21 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4945</guid>
		<description>A ja myślałem, że Regedit to taki fajny gość...</description>
		<content:encoded><![CDATA[<p>A ja myślałem, że Regedit to taki fajny gość...</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Reg</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4942</link>
		<dc:creator>Reg</dc:creator>
		<pubDate>Sun, 24 Aug 2008 19:33:46 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4942</guid>
		<description>A zobaczcie jaki błąd pokazuje w tym kodzie C# !!!

error CS0246: The type or namespace name &#039;SomeType&#039; could not be found (are you missing a using directive or an assembly reference?)

Czyli jak się chce to się da ! C++ jest po prostu do dupy :P</description>
		<content:encoded><![CDATA[<p>A zobaczcie jaki błąd pokazuje w tym kodzie C# !!!</p>
<p>error CS0246: The type or namespace name 'SomeType' could not be found (are you missing a using directive or an assembly reference?)</p>
<p>Czyli jak się chce to się da ! C++ jest po prostu do dupy :P</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kos</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4924</link>
		<dc:creator>Kos</dc:creator>
		<pubDate>Tue, 19 Aug 2008 16:05:36 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4924</guid>
		<description>Oj, mądra notka. C++ jest po prostu bardzo funkcjonalny, przez co to, co teoretycznie nie ma sensu, jest w nim poprawne. Na przykład mając jakąś zmienną, można sobie napisać:
zmienna;
To samo do stałych dosłownych:
5;
W pełni poprawna instrukcja kodu (z językowego punktu widzenia rzecz jasna ;) ). C i C++ pozwalają na takie rzeczy, więc i błędy są takie, a nie inne, bo kompilator nie ma możliwości się domyślić, o co nam chodziło. Nawet poczciwy średnik może się mścić:
instrukcja1();
instrukcja2();
Gdy po pierwszej zapomnimy średnika (niby oczywisty błąd), kompilator wyrzuci jakiś tam błąd, ale na pewno nie będzie to nic w stylu &quot;expected ; at end of line&quot;. Kompilator olewa białe znaki, więc równie dobrze mógłby tam (w danych warunkach) stać jakikolwiek operator, ot choćby przecinek, plus lub nawet znak przypisania.
&quot;Wolność&quot; składni C pozwala też na robienie wielu innych błędów, jak choćby tradycyjny wręcz while (i=0) { kod(); }. Tyle, że to jest o tyle gorsze od poprzednich przykładów, że się kompiluje... Na szczęście generując jednocześnie warninga na każdym sensownym kompilatorze, więc pół biedy.

Pamiętam, że gdy &quot;wyrosłem&quot; ze starego, dobrego Pascala i zacząłem uczyć się C++, miałem właśnie przez takie rzeczy sporo trudności z przerzutką. Oj, ile to ja wtedy miałem problemów przez te enigmatyczne nazwy błędów. :) Najwięcej miałem zabawy, gdy w programie miałem coś takiego:
#include &quot;klasa.h&quot;
#include 
A w nagłówku klasa.h moim zwyczajem zapominałem średnika po klamrze zamykającej definicję. I otwierałem z pasją nagłówek OpenGLa, z nadzieją, że uda mi się poprawić w nim te liczne błędy i jednocześnie zastanawiając się, czemu nigdy wcześniej ich nie zauważyłem. :&gt;

Motto proste: &quot;With great power comes great responsibility&quot;, co można w tym wypadku dość luźno przetłumaczyć jako &quot;Skoro jesteś na tyle odważny, by pisać w C++, to sam sobie szukaj swoich błędów&quot; :}
Wzdych... A programiści Javy to dopiero mają luksusy. Wpisze sobie user Eclipse pustą funkcję:
int funkcja() {
}
Od razu ma ładnie podkreślone na czerwono, z komunikatem w stylu &quot;No return statement found&quot;, a w menu kontekstowym od razu może sobie wybrać &quot;Add a return statement&quot; lub &quot;Change returned type to void&quot;. To dopiero IDE dla leniwych, wszystko chce zrobić za programistę :) A my, gamedevowe dziadki lubujące się w C++, musimy sobie radzić samemu...
Chociaż jako ciekawostkę dodam, że Eclipse, którego na co dzień używam, też już potrafi znajdywać niektóre błędy. Podkreśla wszelkiej maści błędy składniowe, nawet w skomplikowanych instrukcjach (niestety oznacza je raptem jako &quot;Syntax error&quot; - jak już wiemy, rozpoznać &#039;faktycznego&#039; błędu w C++ nie idzie), potrafi też rozpoznać złe wywołanie funkcji (na podstawie niezgodności typów parametrów - chociaż tego w aktualnej wersji nie wyróżnia, raptem nie koloruje wywołania funkcji). MS VS pewnie też nie pozostaje w tyle pod względem wprowadzania w użytek tego typu bajerów? Choć z drugiej strony, z tego co wiem, nawet do semantycznego podświetlania składni potrzebuje płatnego plugina... zgroza! :/

Sytuacja programistów C++ nie jest w kwestiach rozpoznawania i znajdywania błędów taka bajkowa, jak w przypadku np. Javy (najfajniejsze są te długie tramwaje błędów przy szablonach), ale jak widać, narzędzia idą do przodu, stary nasz język uparcie nie chce się wynieść z rynku, więc kto wie? Może kiedyś doczekamy takich &#039;bajerów&#039; ułatwiających życie, jak ot choćby ta wspomniana Java?</description>
		<content:encoded><![CDATA[<p>Oj, mądra notka. C++ jest po prostu bardzo funkcjonalny, przez co to, co teoretycznie nie ma sensu, jest w nim poprawne. Na przykład mając jakąś zmienną, można sobie napisać:<br />
zmienna;<br />
To samo do stałych dosłownych:<br />
5;<br />
W pełni poprawna instrukcja kodu (z językowego punktu widzenia rzecz jasna ;) ). C i C++ pozwalają na takie rzeczy, więc i błędy są takie, a nie inne, bo kompilator nie ma możliwości się domyślić, o co nam chodziło. Nawet poczciwy średnik może się mścić:<br />
instrukcja1();<br />
instrukcja2();<br />
Gdy po pierwszej zapomnimy średnika (niby oczywisty błąd), kompilator wyrzuci jakiś tam błąd, ale na pewno nie będzie to nic w stylu "expected ; at end of line". Kompilator olewa białe znaki, więc równie dobrze mógłby tam (w danych warunkach) stać jakikolwiek operator, ot choćby przecinek, plus lub nawet znak przypisania.<br />
"Wolność" składni C pozwala też na robienie wielu innych błędów, jak choćby tradycyjny wręcz while (i=0) { kod(); }. Tyle, że to jest o tyle gorsze od poprzednich przykładów, że się kompiluje... Na szczęście generując jednocześnie warninga na każdym sensownym kompilatorze, więc pół biedy.</p>
<p>Pamiętam, że gdy "wyrosłem" ze starego, dobrego Pascala i zacząłem uczyć się C++, miałem właśnie przez takie rzeczy sporo trudności z przerzutką. Oj, ile to ja wtedy miałem problemów przez te enigmatyczne nazwy błędów. :) Najwięcej miałem zabawy, gdy w programie miałem coś takiego:<br />
#include "klasa.h"<br />
#include<br />
A w nagłówku klasa.h moim zwyczajem zapominałem średnika po klamrze zamykającej definicję. I otwierałem z pasją nagłówek OpenGLa, z nadzieją, że uda mi się poprawić w nim te liczne błędy i jednocześnie zastanawiając się, czemu nigdy wcześniej ich nie zauważyłem. :&gt;</p>
<p>Motto proste: "With great power comes great responsibility", co można w tym wypadku dość luźno przetłumaczyć jako "Skoro jesteś na tyle odważny, by pisać w C++, to sam sobie szukaj swoich błędów" :}<br />
Wzdych... A programiści Javy to dopiero mają luksusy. Wpisze sobie user Eclipse pustą funkcję:<br />
int funkcja() {<br />
}<br />
Od razu ma ładnie podkreślone na czerwono, z komunikatem w stylu "No return statement found", a w menu kontekstowym od razu może sobie wybrać "Add a return statement" lub "Change returned type to void". To dopiero IDE dla leniwych, wszystko chce zrobić za programistę :) A my, gamedevowe dziadki lubujące się w C++, musimy sobie radzić samemu...<br />
Chociaż jako ciekawostkę dodam, że Eclipse, którego na co dzień używam, też już potrafi znajdywać niektóre błędy. Podkreśla wszelkiej maści błędy składniowe, nawet w skomplikowanych instrukcjach (niestety oznacza je raptem jako "Syntax error" - jak już wiemy, rozpoznać 'faktycznego' błędu w C++ nie idzie), potrafi też rozpoznać złe wywołanie funkcji (na podstawie niezgodności typów parametrów - chociaż tego w aktualnej wersji nie wyróżnia, raptem nie koloruje wywołania funkcji). MS VS pewnie też nie pozostaje w tyle pod względem wprowadzania w użytek tego typu bajerów? Choć z drugiej strony, z tego co wiem, nawet do semantycznego podświetlania składni potrzebuje płatnego plugina... zgroza! :/</p>
<p>Sytuacja programistów C++ nie jest w kwestiach rozpoznawania i znajdywania błędów taka bajkowa, jak w przypadku np. Javy (najfajniejsze są te długie tramwaje błędów przy szablonach), ale jak widać, narzędzia idą do przodu, stary nasz język uparcie nie chce się wynieść z rynku, więc kto wie? Może kiedyś doczekamy takich 'bajerów' ułatwiających życie, jak ot choćby ta wspomniana Java?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xion</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4923</link>
		<dc:creator>Xion</dc:creator>
		<pubDate>Tue, 19 Aug 2008 13:41:24 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4923</guid>
		<description>lmmilewski: Deklarowałem zmienną jako lokalną. A C++ jest kontekstowy, oczywiście, ale to tylko dlatego, że wszystkie języki &lt;strong&gt;bez&lt;/strong&gt;kontekstowe też są kontekstowe. Lingwistyka jest naprawdę sensowna, nie ma co  ;)

reVis: No no... To już całkiem blisko do słynnego przykładu z generowaniem liczb pierwszych w kolejnych komunikatach o błędach :)</description>
		<content:encoded><![CDATA[<p>lmmilewski: Deklarowałem zmienną jako lokalną. A C++ jest kontekstowy, oczywiście, ale to tylko dlatego, że wszystkie języki <strong>bez</strong>kontekstowe też są kontekstowe. Lingwistyka jest naprawdę sensowna, nie ma co  ;)</p>
<p>reVis: No no... To już całkiem blisko do słynnego przykładu z generowaniem liczb pierwszych w kolejnych komunikatach o błędach :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: reVis</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4922</link>
		<dc:creator>reVis</dc:creator>
		<pubDate>Tue, 19 Aug 2008 13:04:54 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4922</guid>
		<description>I tak trzeba przyznać, że błędy związane z samą składnią, po pewnej ilości praktyki są stosunkowo łatwo rozpoznawalne. Sytuacja ma się znacznie gorzej jak do gry wchodzą szablony. Wtedy dopiero błędy potrafią być uciążliwe przez bardzo długie logi.
Od strony programisty ciekawym rozwiązaniem są sposoby wykorzystania komunikatów kompilatora jako rozszerzeń dla języka. Mam tutaj na myśli tworzenie constraints (ograniczeń) dla szablonów. Sama technika jest przydatna, ale też przebiegła. Użyte słowa przy ich deklaracji, które trafiają na ekran w czasie kompilacji wskazują na powstały problem i niezgodność.
http://www.research.att.com/~bs/bs_faq2.html#constraints</description>
		<content:encoded><![CDATA[<p>I tak trzeba przyznać, że błędy związane z samą składnią, po pewnej ilości praktyki są stosunkowo łatwo rozpoznawalne. Sytuacja ma się znacznie gorzej jak do gry wchodzą szablony. Wtedy dopiero błędy potrafią być uciążliwe przez bardzo długie logi.<br />
Od strony programisty ciekawym rozwiązaniem są sposoby wykorzystania komunikatów kompilatora jako rozszerzeń dla języka. Mam tutaj na myśli tworzenie constraints (ograniczeń) dla szablonów. Sama technika jest przydatna, ale też przebiegła. Użyte słowa przy ich deklaracji, które trafiają na ekran w czasie kompilacji wskazują na powstały problem i niezgodność.<br />
<a href="http://www.research.att.com/~bs/bs_faq2.html#constraints">http://www.research.att.com/~bs/bs_faq2.html#constraints</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lmmilewski</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4921</link>
		<dc:creator>lmmilewski</dc:creator>
		<pubDate>Tue, 19 Aug 2008 12:52:56 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4921</guid>
		<description>Nie wiem jak to kompilowałeś. U mnie program:
SomeType variable;
int main() {
    return 0;
}

Daje komunikat:
/tmp/main.cpp:1: error: ‘SomeType’ does not name a type

Jeżeli wstawię średnik po SomeType to dostaję dwa błędy:
/tmp/main.cpp:1: error: expected constructor, destructor, or type conversion before ‘;’ token
/tmp/main.cpp:1: error: expected constructor, destructor, or type conversion before ‘;’ token

W obu przypadkach komunikaty są bardzo sensowne. 

Zgadzam się, C++ ma skomplikowaną składnię. Bez trudu można też napisać kod mający 6 linii, który wygeneruje ~1k linii błędu. 

Nie oszukujmy się jednak. Kompilatory potrafią radzić sobie z takimi, prostymi przypadkami. 

Kompilowałem:
g++ -g -W -Wall -pedantic /tmp/main.cpp
g++ (Debian 4.3.1-2) 4.3.1

Język C++ daje się opisać gramatyką kontekstową, więc jest kontekstowy. Jest jakiś niuans?</description>
		<content:encoded><![CDATA[<p>Nie wiem jak to kompilowałeś. U mnie program:<br />
SomeType variable;<br />
int main() {<br />
    return 0;<br />
}</p>
<p>Daje komunikat:<br />
/tmp/main.cpp:1: error: ‘SomeType’ does not name a type</p>
<p>Jeżeli wstawię średnik po SomeType to dostaję dwa błędy:<br />
/tmp/main.cpp:1: error: expected constructor, destructor, or type conversion before ‘;’ token<br />
/tmp/main.cpp:1: error: expected constructor, destructor, or type conversion before ‘;’ token</p>
<p>W obu przypadkach komunikaty są bardzo sensowne. </p>
<p>Zgadzam się, C++ ma skomplikowaną składnię. Bez trudu można też napisać kod mający 6 linii, który wygeneruje ~1k linii błędu. </p>
<p>Nie oszukujmy się jednak. Kompilatory potrafią radzić sobie z takimi, prostymi przypadkami. </p>
<p>Kompilowałem:<br />
g++ -g -W -Wall -pedantic /tmp/main.cpp<br />
g++ (Debian 4.3.1-2) 4.3.1</p>
<p>Język C++ daje się opisać gramatyką kontekstową, więc jest kontekstowy. Jest jakiś niuans?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: polymorph</title>
		<link>http://xion.org.pl/2008/08/19/to-czego-oczekuje-kompilator/comment-page-1/#comment-4920</link>
		<dc:creator>polymorph</dc:creator>
		<pubDate>Tue, 19 Aug 2008 11:51:43 +0000</pubDate>
		<guid isPermaLink="false">http://xion.org.pl/?p=612#comment-4920</guid>
		<description>Ta, a najlepiej jak się zapomni średnika po definicji klasy... jak pierwszy raz spotkałem się z tym błędem i to jeszcze w całkiem sporym projekcie to zajęło mi prawie tydzień żeby go zlokalizować. Teraz w sumie tez się czasami zdarza że potrzebuje nawet 0,5h żeby pokojarzyć.</description>
		<content:encoded><![CDATA[<p>Ta, a najlepiej jak się zapomni średnika po definicji klasy... jak pierwszy raz spotkałem się z tym błędem i to jeszcze w całkiem sporym projekcie to zajęło mi prawie tydzień żeby go zlokalizować. Teraz w sumie tez się czasami zdarza że potrzebuje nawet 0,5h żeby pokojarzyć.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

