The include directory has all the public headers. These are headers that you can include in your code, such as <stdio.h> and <type_traits> , as well as the implementation headers required by these headers.
The crt\src directory contains CRT sources, including most of the .asm , .c and .cpp files used to create CRTs. This directory also has a copy of many CRT headers, and in some cases these headers are different from what is in the include directory. This is just an artifact of how a CRT was built.
When debugging inline code defined in CRT headers, the debugger should always select the correct header. If both directories contain the same copy of the header, then the debugger simply selects one, and since the headers are the same, it does not matter which one it chooses. If the headers are different, then which header the debugger chooses depends on the object into which the built-in function was compiled. If the object is part of a CRT, you enter the header from crt\src ; if the object is from one of your source files, you enter the header with include . In principle, the debugger should always be able to find the correct copy of the header.
We have greatly simplified this in CTP Visual Studio "14". The crt\src directory no longer has public headers, and the headers sent to the include directory are the same as those used to build the CRT.
James McNellis
source share