I can't find anything on MSDN or elsewhere, but are there hard-coded limits to how deep nesting of header inclusion can go? Example:
// H1.h
// guards etc.
#include "H2.h"
// H2.h
// guards etc.
#include "H3.h"
//...
// HN.h <---- how large can N get??
I wonder if there is anything in the Standard about this. If the answer is implementation defined, then I'm primarily interested in the Visual Studio toolchain.
I wrote a header file that includes itself and compiled it with MSVS 2010. That gave the error message:
From MSDN for Visual Studio 2012:
UPDATE:
This "official" limit is probably more of a guideline so that people won't start to stack include files for no reason. I do not believe that there has been a compiler with so restrictive inclusion limits for a couple of decades at least.
For example, according to one of the other answers at least one version of the VS C++ compiler supports about 1024 nesting levels.
The standard also says something about it (in the part about implementation quantities, annex B):
Note that this is only a recommended minimum, so a compiler may not support that many inclusions (but most compilers do, as shown in other answers).
Yes: 200. At least for my version of gcc.
It can be easily tested:
This yields: