&gt; Isn&#x27;t the problem here imports in general?<p>That&#x27;s a very complicated question.<p>In a complex world, you have to do <i>something</i> to establish the context in which a particular piece of code is being evaluated.  It&#x27;s a matter of taste whether that context establishment should come before or after the code for which the context is being established.  Personally, I prefer the context establishment to come before, but reasonable people can disagree.  This extends even to the language level, where you have some languages (like the C family, and Lisp) where variable bindings always precede their usage, and others like ML and Haskell, where the bindings can come after they are used.<p>But what I was complaining about was specific to #includes, which use a very particular (and badly broken) mechanism to establish context, namely, textual inclusion.  It was a horrible hack invented to appease a brain-damaged compiler which could only deal with one file at a time.  In 1970 this was an understandable engineering trade-off.  In 2016, not so much.  The right way to fix it is to get rid of it and replace it with something less brain-damaged rather than layering more hacks on top of it (IMHO).