La directory include
ha tutto il pubblico lui aders. Si tratta di intestazioni che è possibile includere nel codice, ad esempio <stdio.h>
e <type_traits>
, oltre alle intestazioni di implementazione richieste da tali intestazioni.
La directory crt\src
contiene i sorgenti CRT, tra cui la maggior parte delle .asm
, .c
, e .cpp
file utilizzati per costruire il CRT. Questa directory ha anche una copia di molte delle intestazioni CRT e in alcuni casi queste intestazioni sono diverse da quelle presenti nella directory include
. Questo è puramente un artefatto di come è stato costruito il CRT.
Durante il debug nel codice inline definito nelle intestazioni CRT, il debugger deve sempre selezionare l'intestazione corretta. Se entrambe le directory contengono la stessa copia di un'intestazione, il debugger ne sceglierà una e dal momento che le intestazioni sono le stesse non importa quale scegli. Se le intestazioni sono diverse, l'intestazione scelta dal debugger dipende dall'oggetto in cui è stata compilata la funzione inline. Se l'oggetto fa parte del CRT, entrerai nell'intestazione da crt\src
; se l'oggetto proviene da uno dei tuoi file sorgente, entrerai nell'intestazione da include
. Fondamentalmente, il debugger dovrebbe sempre essere in grado di trovare la copia corretta dell'intestazione.
Abbiamo notevolmente semplificato questo in Visual Studio "14" CTP. Non ci sono più intestazioni pubbliche nella directory crt\src
e le intestazioni che vengono spedite nella directory include
sono le stesse utilizzate per creare il CRT.
fonte
2014-06-13 18:45:02
Penso che tu non abbia "Mostra estensioni di file" abilitato in Explorer, quindi confonderai i file Header e Source. – Dai
I file che stavo osservando erano entrambi file di intestazione perché l'uso di modelli indica che l'implementazione deve essere in un file di intestazione. Entrambi contenevano l'implementazione per lo stesso metodo. – mezamorphic