<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic H files including H files = cyclic dependency :  bad design or natural for complex/big  ones? in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/H-files-including-H-files-cyclic-dependency-bad-design-or/m-p/210375#M18036</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi people&lt;/P&gt;&lt;P&gt;I read a lot of docs before post it here, anf for my surprise this subject is extremely debated in some foruns and tutorials, either in C or C++ (specially) programming..(I use C++)&lt;/P&gt;&lt;P&gt;In big designs ( although you can do it in a small one, if you want ) sometimes you need to build a data structure based on another data structure.&lt;/P&gt;&lt;P&gt;Lets considere only 2 units: a.cpp / a.h and b.cpp / b.h.&lt;/P&gt;&lt;P&gt;Lets call them simply as A and B, for simple commodity...&lt;/P&gt;&lt;P&gt;// a.h&lt;/P&gt;&lt;P&gt;#ifndef A_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#define A_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;struct a_t&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint8 a,b,c;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;#endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// b.h&lt;/P&gt;&lt;P&gt;#ifndef B_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#define B_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#include a.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // need to know about a_t&lt;/P&gt;&lt;P&gt;struct b_t&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; a_t&amp;nbsp;&amp;nbsp;&amp;nbsp; my_a;&amp;nbsp;&amp;nbsp; // type from&amp;nbsp; a.h !!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint8 &amp;nbsp;c,d,e;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;#endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// a.cpp&lt;/P&gt;&lt;P&gt;#include a.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // self include (C++ approach)&lt;/P&gt;&lt;P&gt;#include b.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // to know about b_t&lt;/P&gt;&lt;P&gt;void main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;b_t&amp;nbsp; data;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // a instance of b_t;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // using b_t type variable ....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data.my_a.a=1;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data.c=2;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;};&amp;nbsp;&lt;/P&gt;&lt;P&gt;Everything is ok:&amp;nbsp;A depend on B, BUT not vice versa....easy...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now imagine that&amp;nbsp;A must create&amp;nbsp; a new struct based on b_t (declared in b.h )&lt;/P&gt;&lt;P&gt;Lets modify a.h to:&lt;/P&gt;&lt;P&gt;// a.h&lt;/P&gt;&lt;P&gt;#ifndef A_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#define A_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#include "b.h"&amp;nbsp;&amp;nbsp; // to know about b_t type&lt;/P&gt;&lt;P&gt;struct a_t&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint8 a,b,c;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;struct a1&amp;nbsp;&amp;nbsp; // NEW !!!&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; b_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_b;&amp;nbsp;&amp;nbsp; // from b.h !!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint32&amp;nbsp; t;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;#endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now start the confusion....&lt;/P&gt;&lt;P&gt;a.h wants to create a type based on a struct declared on b.h, so a.h must include b.h.&lt;/P&gt;&lt;P&gt;BUT, b.h was already including a.h, sine the beginning...&lt;/P&gt;&lt;P&gt;So we have a mutual depenedency, also called cyclical dependence...&lt;/P&gt;&lt;P&gt;I understood that the #ifdef XX_H&amp;nbsp; statements (called "compilation guard" ) will make the compilation skipp over one of these files, since that after the first compilation, its definition will occur, so when the next file compile, it will find a already defined guard condition, skipping on it...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Forward declaration:&lt;/P&gt;&lt;P&gt;After many readings, I learned there is a solution for mutual inclusion SINCE IF the depenedence is based ONLY in pointers / references.&lt;/P&gt;&lt;P&gt;To use&amp;nbsp;a_t in a b.h WITHOUT include&amp;nbsp;a.h into b.h ,&amp;nbsp;you can do:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;struct a_t;&amp;nbsp;&amp;nbsp; // forward declaration : like a prototype for functions...&lt;/P&gt;&lt;P&gt;struct b_t&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; a_t&amp;nbsp; *my_a; // it is a pointer to the type, not a type it self !!!&lt;/P&gt;&lt;P&gt;}&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BUT, not solve the case when you really need export structures between 2 files, when they depends each other.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I saw lot of rules been afirmed, but criticised late, and vice-versa.&lt;/P&gt;&lt;P&gt;The 2 polemic ones:&lt;/P&gt;&lt;P&gt;1- Only c (cpp) files can #include H files...&lt;/P&gt;&lt;P&gt;2- All #includes must be made into H files, so it can work alone...&lt;/P&gt;&lt;P&gt;Many&amp;nbsp;tradeoffs were mentioned against the 2 rules above.&lt;/P&gt;&lt;P&gt;It seems there is not a "unique" true about it...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In my case, I´m in troubles due to cyclic depenedence.&lt;/P&gt;&lt;P&gt;I have a file xxx.h&amp;nbsp; that simply ignores a type that was defined into another&amp;nbsp;H file wich WAS really included into xxx.h&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The trick I did, is have a globals.h where I put some structures that causes this cyclical depenedcies.&lt;/P&gt;&lt;P&gt;It works, but is ugly and not professional.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Well, this example I wrote is just to ilustrate about the "nature" of this issue.&lt;/P&gt;&lt;P&gt;There can be some sintax error, some wrong detail, &amp;nbsp;etc...BUT, in fact such cyclical condition exists and leads to a good headache in bigger design.&lt;/P&gt;&lt;P&gt;Some guys says it is a bad design, other says it is needed if the project gets complex / big.&lt;/P&gt;&lt;P&gt;My design has 82 filles...it´s not huuuggee, but enough big to reach such complexity.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance guys !!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ricardo Raupp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 26 Aug 2009 00:05:43 GMT</pubDate>
    <dc:creator>Ricardo_RauppV</dc:creator>
    <dc:date>2009-08-26T00:05:43Z</dc:date>
    <item>
      <title>H files including H files = cyclic dependency :  bad design or natural for complex/big  ones?</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/H-files-including-H-files-cyclic-dependency-bad-design-or/m-p/210375#M18036</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi people&lt;/P&gt;&lt;P&gt;I read a lot of docs before post it here, anf for my surprise this subject is extremely debated in some foruns and tutorials, either in C or C++ (specially) programming..(I use C++)&lt;/P&gt;&lt;P&gt;In big designs ( although you can do it in a small one, if you want ) sometimes you need to build a data structure based on another data structure.&lt;/P&gt;&lt;P&gt;Lets considere only 2 units: a.cpp / a.h and b.cpp / b.h.&lt;/P&gt;&lt;P&gt;Lets call them simply as A and B, for simple commodity...&lt;/P&gt;&lt;P&gt;// a.h&lt;/P&gt;&lt;P&gt;#ifndef A_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#define A_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;struct a_t&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint8 a,b,c;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;#endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// b.h&lt;/P&gt;&lt;P&gt;#ifndef B_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#define B_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#include a.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // need to know about a_t&lt;/P&gt;&lt;P&gt;struct b_t&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; a_t&amp;nbsp;&amp;nbsp;&amp;nbsp; my_a;&amp;nbsp;&amp;nbsp; // type from&amp;nbsp; a.h !!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint8 &amp;nbsp;c,d,e;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;#endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// a.cpp&lt;/P&gt;&lt;P&gt;#include a.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // self include (C++ approach)&lt;/P&gt;&lt;P&gt;#include b.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // to know about b_t&lt;/P&gt;&lt;P&gt;void main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;b_t&amp;nbsp; data;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // a instance of b_t;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // using b_t type variable ....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data.my_a.a=1;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; data.c=2;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;};&amp;nbsp;&lt;/P&gt;&lt;P&gt;Everything is ok:&amp;nbsp;A depend on B, BUT not vice versa....easy...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now imagine that&amp;nbsp;A must create&amp;nbsp; a new struct based on b_t (declared in b.h )&lt;/P&gt;&lt;P&gt;Lets modify a.h to:&lt;/P&gt;&lt;P&gt;// a.h&lt;/P&gt;&lt;P&gt;#ifndef A_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#define A_H&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;#include "b.h"&amp;nbsp;&amp;nbsp; // to know about b_t type&lt;/P&gt;&lt;P&gt;struct a_t&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint8 a,b,c;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;struct a1&amp;nbsp;&amp;nbsp; // NEW !!!&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; b_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my_b;&amp;nbsp;&amp;nbsp; // from b.h !!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; uint32&amp;nbsp; t;&lt;/P&gt;&lt;P&gt;};&lt;/P&gt;&lt;P&gt;#endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // avoid 2+ including&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now start the confusion....&lt;/P&gt;&lt;P&gt;a.h wants to create a type based on a struct declared on b.h, so a.h must include b.h.&lt;/P&gt;&lt;P&gt;BUT, b.h was already including a.h, sine the beginning...&lt;/P&gt;&lt;P&gt;So we have a mutual depenedency, also called cyclical dependence...&lt;/P&gt;&lt;P&gt;I understood that the #ifdef XX_H&amp;nbsp; statements (called "compilation guard" ) will make the compilation skipp over one of these files, since that after the first compilation, its definition will occur, so when the next file compile, it will find a already defined guard condition, skipping on it...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Forward declaration:&lt;/P&gt;&lt;P&gt;After many readings, I learned there is a solution for mutual inclusion SINCE IF the depenedence is based ONLY in pointers / references.&lt;/P&gt;&lt;P&gt;To use&amp;nbsp;a_t in a b.h WITHOUT include&amp;nbsp;a.h into b.h ,&amp;nbsp;you can do:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;struct a_t;&amp;nbsp;&amp;nbsp; // forward declaration : like a prototype for functions...&lt;/P&gt;&lt;P&gt;struct b_t&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; a_t&amp;nbsp; *my_a; // it is a pointer to the type, not a type it self !!!&lt;/P&gt;&lt;P&gt;}&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BUT, not solve the case when you really need export structures between 2 files, when they depends each other.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I saw lot of rules been afirmed, but criticised late, and vice-versa.&lt;/P&gt;&lt;P&gt;The 2 polemic ones:&lt;/P&gt;&lt;P&gt;1- Only c (cpp) files can #include H files...&lt;/P&gt;&lt;P&gt;2- All #includes must be made into H files, so it can work alone...&lt;/P&gt;&lt;P&gt;Many&amp;nbsp;tradeoffs were mentioned against the 2 rules above.&lt;/P&gt;&lt;P&gt;It seems there is not a "unique" true about it...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In my case, I´m in troubles due to cyclic depenedence.&lt;/P&gt;&lt;P&gt;I have a file xxx.h&amp;nbsp; that simply ignores a type that was defined into another&amp;nbsp;H file wich WAS really included into xxx.h&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The trick I did, is have a globals.h where I put some structures that causes this cyclical depenedcies.&lt;/P&gt;&lt;P&gt;It works, but is ugly and not professional.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Well, this example I wrote is just to ilustrate about the "nature" of this issue.&lt;/P&gt;&lt;P&gt;There can be some sintax error, some wrong detail, &amp;nbsp;etc...BUT, in fact such cyclical condition exists and leads to a good headache in bigger design.&lt;/P&gt;&lt;P&gt;Some guys says it is a bad design, other says it is needed if the project gets complex / big.&lt;/P&gt;&lt;P&gt;My design has 82 filles...it´s not huuuggee, but enough big to reach such complexity.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance guys !!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ricardo Raupp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2009 00:05:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/H-files-including-H-files-cyclic-dependency-bad-design-or/m-p/210375#M18036</guid>
      <dc:creator>Ricardo_RauppV</dc:creator>
      <dc:date>2009-08-26T00:05:43Z</dc:date>
    </item>
    <item>
      <title>Re: H files including H files = cyclic dependency :  bad design or natural for complex/big  ones?</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/H-files-including-H-files-cyclic-dependency-bad-design-or/m-p/210376#M18037</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Do NOT cross-post your queries, please!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;---Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2009 20:32:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/H-files-including-H-files-cyclic-dependency-bad-design-or/m-p/210376#M18037</guid>
      <dc:creator>J2MEJediMaster</dc:creator>
      <dc:date>2009-08-26T20:32:25Z</dc:date>
    </item>
  </channel>
</rss>

