difference between putting head file(.h) at the beginning and end of another file(.h or .cpp)
<p>Recently , I was compiling libfacebookcpp on mac os. I found a strange usage which I can't understand.
There are two files, AuthorizedObject.hpp and List.hpp. 
At the end of file AuthorizedObject.hpp,there is one line :#include "List.hpp".Now I compile successfully. But 
when I move that line to the beginning, error occurs. The skeleton of the codes are:</p>

<pre><code>//AuthorizedObject.hpp
class AuthorizedObject
{
public:
... 
template&lt;class TType&gt;
void _GetConnection(const ::std::string&amp; uri, List&lt;TType&gt; *list) const
{
    LIBFACEBOOKCPP_CHKARG(list);

    Json::Value value;
    request_-&gt;GetResponse(uri, &amp;value);

    list-&gt;Deserialize(*this, value);
}
...
}
#include "List.hpp" //end

----------------------------------------------------------
//List.hpp 
#include "AuthorizedObject.hpp"
class LIBFACEBOOKCPP_API List : public AuthorizedObject
{
private: // private classes
...
}
</code></pre>

<p>I guess if put that line(#include "List.h") at the beginning of AuthorizedObject.hpp, the two files include each other by circle. So the compiler don't know how to compile.But put that line at the end will solve this problem? Why? Thank you in advance.</p>
