From c94be55204693c5363fafac452a1c8521b4b3eb2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 21 Feb 2024 13:52:34 -0800 Subject: [PATCH 1/9] add link to backend improvments --- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md index 84d58900b7a..3cbdd7471f0 100644 --- a/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md +++ b/docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md @@ -1,7 +1,7 @@ --- title: "What's new for C++ in Visual Studio" description: "The new features and fixes in the Microsoft C/C++ compiler and tools in Visual Studio." -ms.date: 02/07/2024 +ms.date: 02/21/2024 ms.service: "visual-cpp" ms.subservice: "ide" ms.custom: intro-whats-new @@ -37,7 +37,9 @@ Briefly, some of the new features are: `` per [P0009R18](https://wg21.link/P0009R18) and subsequent wording changes that were applied to the C++23 Standard. Also, `format()` can format pointers per [P2510R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2510r3.pdf). -For a comprehensive summary of new C++ features in Visual Studio 17.9, see [What’s New for C++ Developers in Visual Studio 2022 17.9](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2022-17-9/). +For a comprehensive summary of new C++ features in Visual Studio 17.9, see [MSVC Backend Updates since Visual Studio 2022 version 17.3](https://devblogs.microsoft.com/cppblog/msvc-backend-updates-since-visual-studio-2022-version-17-3/). + +For a summary of C++ compiler backend improvements since Visual Studio 17.3 until now, see [What's new in the Visual C++ compiler backend](https://devblogs.microsoft.com/cppblog/whats-new-in-the-visual-cpp-compiler-backend/). For a summary of new features in the Visual Studio 17.9 IDE, see [Visual Studio 2022 version 17.9 Release Notes](/visualstudio/releases/2022/release-notes). From ae86dfb843a937a3ecd6f5399576bfff924fb3a2 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 21 Feb 2024 16:55:49 -0800 Subject: [PATCH 2/9] change feedback system from github issues to the new UUF system (#5208) Co-authored-by: TylerMSFT --- docs/docfx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docfx.json b/docs/docfx.json index 58c79b1f445..3ee5ea465cb 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -56,7 +56,7 @@ "searchScope": [ "C++" ], - "feedback_system": "GitHub", + "feedback_system": "Standard", "feedback_github_repo": "MicrosoftDocs/cpp-docs", "feedback_product_url": "https://developercommunity.visualstudio.com/cpp/", "feedback_help_link_url": "https://learn.microsoft.com/en-us/answers/tags/314/cpp", From 7e0494f50a1c3f96f9b4d133e6b11f44ebc4c57b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Feb 2024 15:59:35 -0800 Subject: [PATCH 3/9] new article: include diagnostics --- docs/ide/include-diagnostics.md | 106 ++++++++++++++++++ ...tudio-2022-codelens-include-references.png | Bin 0 -> 12951 bytes .../vs2022-enable-code-lens-for-includes.png | Bin 0 -> 30768 bytes .../vs2022-enable-include-diagnostics.png | Bin 0 -> 13911 bytes docs/ide/toc.yml | 2 + 5 files changed, 108 insertions(+) create mode 100644 docs/ide/include-diagnostics.md create mode 100644 docs/ide/media/visual-studio-2022-codelens-include-references.png create mode 100644 docs/ide/media/vs2022-enable-code-lens-for-includes.png create mode 100644 docs/ide/media/vs2022-enable-include-diagnostics.png diff --git a/docs/ide/include-diagnostics.md b/docs/ide/include-diagnostics.md new file mode 100644 index 00000000000..881d5f54ea5 --- /dev/null +++ b/docs/ide/include-diagnostics.md @@ -0,0 +1,106 @@ +--- +title: "Include Diagnostics" +description: "Learn how to use #include Diagnostics in Visual Studio to analyze how often something from an include file is used and how an #include impacts build time." +ms.date: 10/10/2023 +ms.topic: "how-to" +f1_keywords: ["include diagnostics"] +helpviewer_keywords: ["include diagnostics"] +--- +# `#include` diagnostics in Visual Studio + +Starting with Visual Studio 17.8, Visual Studio helps you analyze your `#include` files: + +- Displays how often and where something from a header file is used +- Displays the build time for each `#include` file, which helps you identify opportunities to optimize your build time. + +## Enable `#include` diagnostics and CodeLens + +The Include Cleanup feature is off by default. To turn it on, right-click in your editor to bring up the context menu, and choose **Include Directives** > **Turn #include Diagnostics On**. + +:::image type="complex" source="media/vs2022-enable-include-diagnostics.png" alt-text="A screenshot of the context menu that appears when you right-click in the code editor area."::: +The context menu shows the include directives option highlighted, which reveals two options: Sort # include directives and turn # include diagnostcs on. +:::image-end::: + +Information about your #include files is displayed via CodeLens, which is off by default. To turn it on, navigate to **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** and confirm that both **Show C++ #include references** and **Show C++ compilation times** are enabled. + +:::image type="complex" source="media/vs2022-enable-code-lens-for-includes.png" alt-text="A screenshot of the options window."::: +The options window is set to Text Editor > All Languages > CodeLens. The Show C++ # include references and Show C++ compilation times options are highlighted. +:::image-end::: + +## View `#include` references + +Create a new C++ console project to try out the include diagnostics. Replace the contents of the `main.cpp` file with the following code: + +```cpp +#include +#include + +// a function that takes a vector of integers and prints them out +void print(std::vector &vec) +{ + for (int i : vec) + { + std::cout << i << std::endl; + } + std::cout << std::endl; +} + +// a function that takes a vector of integers and adds 10 to each element of the vector and store the result in a new vector +std::vector add10(std::vector& vec) +{ + std::vector newVec; + for (int i : vec) + { + newVec.push_back(i + 10); + } + return newVec; +} + +int main() +{ + std::vector vec = { 7, 5, 16, 8 }; + + print(vec); + auto newVec = add10(vec); + print(newVec); +} +``` + +When `#include` diagnostics is turned on, the number of times code from the header file is referenced in the current code file is displayed in CodeLens. It looks like this for the previous code sample: + +```cpp +6 references +#include +5 references +#include +``` + +In the code editor, select `5 references` above `#include ` and a summary of where code from `` is used in this file is displayed: + +:::image type="complex" source="media/visual-studio-2022-codelens-include-references.png" alt-text="A screenshot of the include diagnostics context window showing where code from the vector header file is used."::: +The include diagnostics context window shows that there are 5 places in the code where code from the vector header file is used in the current code file. For example, it's used +:::image-end::: + +Selecting an item takes you to its location in your code. + +## View `#include` build time + +To see the build time for each file you `#include`, you need to first build using Build Insights. + +Turn on Build Insights in the main menu bar by selecting **Build** > **Run Build Insights on Solution** > **Build**. After the build completes, a window appears listing the build times for the various files that are compiled. Return to the source code window, and the build time for each `#include` file is displayed in CodeLens. It'll look similar to this: + +```cpp +6 references | Build: 0.3560s +#include +5 references | Build 0.0360s +#include +``` + +If you have an `#include` directive that is used infrequently, but significantly impacts your compile time, this tool helps you identify it. + +In this article, you've seen how to turn on Include Diagnostics and CodeLens, and how to use Include Diagnostics to analyze how often something from an include file is used and how an `#include` impacts build time. + +## See also + +[C/C++ Include Cleanup overview](include-cleanup-overview.md)\ +[Include Cleanup messages](include-cleanup-messages.md) \ No newline at end of file diff --git a/docs/ide/media/visual-studio-2022-codelens-include-references.png b/docs/ide/media/visual-studio-2022-codelens-include-references.png new file mode 100644 index 0000000000000000000000000000000000000000..62738a007036976299a7e9a5a3a89eb524b1293d GIT binary patch literal 12951 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 literal 0 HcmV?d00001 diff --git a/docs/ide/toc.yml b/docs/ide/toc.yml index 6da778be7ca..7eb9c43b568 100644 --- a/docs/ide/toc.yml +++ b/docs/ide/toc.yml @@ -16,6 +16,8 @@ items: href: ../ide/include-cleanup-config.md - name: Include Cleanup messages href: ../ide/include-cleanup-messages.md + - name: Include diagnostics + href: include-diagnostics.md - name: Set your C++ coding preferences href: ../ide/how-to-set-preferences.md - name: Collaborate using Live Share for C++ From be51ef7d02a6e4ee938cbbd06a25bb8ffec88342 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Feb 2024 16:18:39 -0800 Subject: [PATCH 4/9] acrolinx and edit --- docs/ide/include-diagnostics.md | 32 +++++++++--------- ...tudio-2022-codelens-include-references.png | Bin 12951 -> 24070 bytes docs/ide/toc.yml | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/ide/include-diagnostics.md b/docs/ide/include-diagnostics.md index 881d5f54ea5..ce977e0f148 100644 --- a/docs/ide/include-diagnostics.md +++ b/docs/ide/include-diagnostics.md @@ -6,22 +6,22 @@ ms.topic: "how-to" f1_keywords: ["include diagnostics"] helpviewer_keywords: ["include diagnostics"] --- -# `#include` diagnostics in Visual Studio +# Include Diagnostics in Visual Studio -Starting with Visual Studio 17.8, Visual Studio helps you analyze your `#include` files: +Starting with Visual Studio 17.8, Visual Studio helps you analyze your `#include` files in C and C++: -- Displays how often and where something from a header file is used -- Displays the build time for each `#include` file, which helps you identify opportunities to optimize your build time. +- Displays how often and where something from a header file is used. +- Displays the build time for each `#include` file--which helps you identify opportunities to optimize your build time. -## Enable `#include` diagnostics and CodeLens +## Enable Include Diagnostics and CodeLens -The Include Cleanup feature is off by default. To turn it on, right-click in your editor to bring up the context menu, and choose **Include Directives** > **Turn #include Diagnostics On**. +The Include Diagnostics feature is off by default. To turn it on, right-click in your editor to bring up the context menu, and choose **Include Directives** > **Turn #include Diagnostics On**. :::image type="complex" source="media/vs2022-enable-include-diagnostics.png" alt-text="A screenshot of the context menu that appears when you right-click in the code editor area."::: -The context menu shows the include directives option highlighted, which reveals two options: Sort # include directives and turn # include diagnostcs on. +The context menu shows the include directives option highlighted, which reveals two options: Sort # include directives and turn # include diagnostics on. :::image-end::: -Information about your #include files is displayed via CodeLens, which is off by default. To turn it on, navigate to **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** and confirm that both **Show C++ #include references** and **Show C++ compilation times** are enabled. +Information about your #include files is displayed via CodeLens, which is off by default. To turn the relevant CodeLens settings on, navigate to **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** and confirm both **Show C++ #include references** and **Show C++ compilation times** are enabled. :::image type="complex" source="media/vs2022-enable-code-lens-for-includes.png" alt-text="A screenshot of the options window."::: The options window is set to Text Editor > All Languages > CodeLens. The Show C++ # include references and Show C++ compilation times options are highlighted. @@ -29,7 +29,7 @@ The options window is set to Text Editor > All Languages > CodeLens. The Show C+ ## View `#include` references -Create a new C++ console project to try out the include diagnostics. Replace the contents of the `main.cpp` file with the following code: +Create a new C++ console project to try out Include Diagnostics. Replace the contents of the main `.cpp` file with the following code: ```cpp #include @@ -66,7 +66,7 @@ int main() } ``` -When `#include` diagnostics is turned on, the number of times code from the header file is referenced in the current code file is displayed in CodeLens. It looks like this for the previous code sample: +When Include Diagnostics is turned on, the number of times code from a header file is referenced in the current code file is displayed in CodeLens above the header file. It looks like this for the previous code sample: ```cpp 6 references @@ -75,19 +75,19 @@ When `#include` diagnostics is turned on, the number of times code from the head #include ``` -In the code editor, select `5 references` above `#include ` and a summary of where code from `` is used in this file is displayed: +In the code editor, select **5 references** above `#include ` and a summary of where code from `` is used in this file is displayed: :::image type="complex" source="media/visual-studio-2022-codelens-include-references.png" alt-text="A screenshot of the include diagnostics context window showing where code from the vector header file is used."::: -The include diagnostics context window shows that there are 5 places in the code where code from the vector header file is used in the current code file. For example, it's used +The include diagnostics context window shows that there are five places in the code where code from the vector header file is used in the current code file. For example, it's used twice on the definition of the add10 function, as a return value and parameter. It's used on line 17 in the declaration of newVec, and so on. :::image-end::: -Selecting an item takes you to its location in your code. +Select an item to go to its location in your code. ## View `#include` build time -To see the build time for each file you `#include`, you need to first build using Build Insights. +To see the build time for each file you `#include`, first build using Build Insights. -Turn on Build Insights in the main menu bar by selecting **Build** > **Run Build Insights on Solution** > **Build**. After the build completes, a window appears listing the build times for the various files that are compiled. Return to the source code window, and the build time for each `#include` file is displayed in CodeLens. It'll look similar to this: +Turn on Build Insights from the main menu bar by selecting **Build** > **Run Build Insights on Solution** > **Build**. After the build completes, a window appears to list the build times for the various files that are compiled. Return to the source code window, and the build time for each `#include` file is displayed in CodeLens. It will look similar to this: ```cpp 6 references | Build: 0.3560s @@ -96,7 +96,7 @@ Turn on Build Insights in the main menu bar by selecting **Build** > **Run Build #include ``` -If you have an `#include` directive that is used infrequently, but significantly impacts your compile time, this tool helps you identify it. +If you have an `#include` directive that is used infrequently, but significantly impacts your compile time, this tool can help you identify it. In this article, you've seen how to turn on Include Diagnostics and CodeLens, and how to use Include Diagnostics to analyze how often something from an include file is used and how an `#include` impacts build time. diff --git a/docs/ide/media/visual-studio-2022-codelens-include-references.png b/docs/ide/media/visual-studio-2022-codelens-include-references.png index 62738a007036976299a7e9a5a3a89eb524b1293d..f024ebba6e7ce4060f70563e3465f57fb6d6923d 100644 GIT binary patch literal 24070 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 Date: Thu, 22 Feb 2024 16:23:18 -0800 Subject: [PATCH 5/9] acrolinx --- docs/ide/include-diagnostics.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/ide/include-diagnostics.md b/docs/ide/include-diagnostics.md index ce977e0f148..02c597a677f 100644 --- a/docs/ide/include-diagnostics.md +++ b/docs/ide/include-diagnostics.md @@ -8,7 +8,7 @@ helpviewer_keywords: ["include diagnostics"] --- # Include Diagnostics in Visual Studio -Starting with Visual Studio 17.8, Visual Studio helps you analyze your `#include` files in C and C++: +Starting with Visual Studio 17.8, Visual Studio helps you analyze your C++ `#include` files: - Displays how often and where something from a header file is used. - Displays the build time for each `#include` file--which helps you identify opportunities to optimize your build time. @@ -21,7 +21,7 @@ The Include Diagnostics feature is off by default. To turn it on, right-click in The context menu shows the include directives option highlighted, which reveals two options: Sort # include directives and turn # include diagnostics on. :::image-end::: -Information about your #include files is displayed via CodeLens, which is off by default. To turn the relevant CodeLens settings on, navigate to **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** and confirm both **Show C++ #include references** and **Show C++ compilation times** are enabled. +Information about your #include files is displayed via CodeLens, which is off by default. To turn on the relevant CodeLens settings, navigate to **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** and confirm both **Show C++ #include references** and **Show C++ compilation times** are enabled. :::image type="complex" source="media/vs2022-enable-code-lens-for-includes.png" alt-text="A screenshot of the options window."::: The options window is set to Text Editor > All Languages > CodeLens. The Show C++ # include references and Show C++ compilation times options are highlighted. @@ -29,7 +29,7 @@ The options window is set to Text Editor > All Languages > CodeLens. The Show C+ ## View `#include` references -Create a new C++ console project to try out Include Diagnostics. Replace the contents of the main `.cpp` file with the following code: +To try out Include Diagnostics, create a new C++ console project. Replace the contents of the main `.cpp` file with the following code: ```cpp #include @@ -87,7 +87,7 @@ Select an item to go to its location in your code. To see the build time for each file you `#include`, first build using Build Insights. -Turn on Build Insights from the main menu bar by selecting **Build** > **Run Build Insights on Solution** > **Build**. After the build completes, a window appears to list the build times for the various files that are compiled. Return to the source code window, and the build time for each `#include` file is displayed in CodeLens. It will look similar to this: +Turn on Build Insights from the main menu bar by selecting **Build** > **Run Build Insights on Solution** > **Build**. After the build completes, a window appears to list the build times for the various files that are compiled. Return to the source code window, and the build time for each `#include` file is displayed in CodeLens. It looks similar to this: ```cpp 6 references | Build: 0.3560s From dc194d75add9180a3e0c2a4f9f9c3b26e388c471 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Feb 2024 10:38:05 -0800 Subject: [PATCH 6/9] small edits --- docs/ide/include-diagnostics.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/ide/include-diagnostics.md b/docs/ide/include-diagnostics.md index 02c597a677f..5a8728b56ec 100644 --- a/docs/ide/include-diagnostics.md +++ b/docs/ide/include-diagnostics.md @@ -10,18 +10,18 @@ helpviewer_keywords: ["include diagnostics"] Starting with Visual Studio 17.8, Visual Studio helps you analyze your C++ `#include` files: -- Displays how often and where something from a header file is used. +- Displays how often, and where, something from each header file is used. - Displays the build time for each `#include` file--which helps you identify opportunities to optimize your build time. ## Enable Include Diagnostics and CodeLens -The Include Diagnostics feature is off by default. To turn it on, right-click in your editor to bring up the context menu, and choose **Include Directives** > **Turn #include Diagnostics On**. +The Include Diagnostics feature is off by default. To turn it on, right-click in the code editor to bring up the context menu, and choose **Include Directives** > **Turn #include Diagnostics On**. :::image type="complex" source="media/vs2022-enable-include-diagnostics.png" alt-text="A screenshot of the context menu that appears when you right-click in the code editor area."::: The context menu shows the include directives option highlighted, which reveals two options: Sort # include directives and turn # include diagnostics on. :::image-end::: -Information about your #include files is displayed via CodeLens, which is off by default. To turn on the relevant CodeLens settings, navigate to **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** and confirm both **Show C++ #include references** and **Show C++ compilation times** are enabled. +Information about your `#include` files is displayed via CodeLens, which is off by default. To turn on the relevant CodeLens settings, navigate to **Tools** > **Options** > **Text Editor** > **All Languages** > **CodeLens** and confirm both **Show C++ #include references** and **Show C++ compilation times** are enabled. :::image type="complex" source="media/vs2022-enable-code-lens-for-includes.png" alt-text="A screenshot of the options window."::: The options window is set to Text Editor > All Languages > CodeLens. The Show C++ # include references and Show C++ compilation times options are highlighted. @@ -66,7 +66,7 @@ int main() } ``` -When Include Diagnostics is turned on, the number of times code from a header file is referenced in the current code file is displayed in CodeLens above the header file. It looks like this for the previous code sample: +When Include Diagnostics is turned on, the number of times code from a header file is referenced in the current code file is displayed above the header file. It looks like this for the previous code sample: ```cpp 6 references @@ -75,7 +75,7 @@ When Include Diagnostics is turned on, the number of times code from a header fi #include ``` -In the code editor, select **5 references** above `#include ` and a summary of where code from `` is used in this file is displayed: +In the code editor, select **5 references** above `#include ` and a summary of locations where code from `` is used in this file is displayed: :::image type="complex" source="media/visual-studio-2022-codelens-include-references.png" alt-text="A screenshot of the include diagnostics context window showing where code from the vector header file is used."::: The include diagnostics context window shows that there are five places in the code where code from the vector header file is used in the current code file. For example, it's used twice on the definition of the add10 function, as a return value and parameter. It's used on line 17 in the declaration of newVec, and so on. From f04ce541df0d28c54e20f673fa655c24cf5580dd Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Feb 2024 10:48:41 -0800 Subject: [PATCH 7/9] clarified specific to C++ --- docs/ide/include-diagnostics.md | 4 ++-- docs/ide/toc.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ide/include-diagnostics.md b/docs/ide/include-diagnostics.md index 5a8728b56ec..6e8fb58ee1e 100644 --- a/docs/ide/include-diagnostics.md +++ b/docs/ide/include-diagnostics.md @@ -1,12 +1,12 @@ --- -title: "Include Diagnostics" +title: "C++ Include Diagnostics" description: "Learn how to use #include Diagnostics in Visual Studio to analyze how often something from an include file is used and how an #include impacts build time." ms.date: 10/10/2023 ms.topic: "how-to" f1_keywords: ["include diagnostics"] helpviewer_keywords: ["include diagnostics"] --- -# Include Diagnostics in Visual Studio +# C++ Include Diagnostics in Visual Studio Starting with Visual Studio 17.8, Visual Studio helps you analyze your C++ `#include` files: diff --git a/docs/ide/toc.yml b/docs/ide/toc.yml index 4208e27c883..c208f599e60 100644 --- a/docs/ide/toc.yml +++ b/docs/ide/toc.yml @@ -16,7 +16,7 @@ items: href: ../ide/include-cleanup-config.md - name: Include Cleanup messages href: ../ide/include-cleanup-messages.md - - name: Include Diagnostics + - name: C++ Include Diagnostics href: include-diagnostics.md - name: Set your C++ coding preferences href: ../ide/how-to-set-preferences.md From a079419abdf7aa2ec383b0f9ba80275c84e0fa70 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Feb 2024 10:58:01 -0800 Subject: [PATCH 8/9] clarify that this is C++ include diagnostics --- docs/ide/include-diagnostics.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/ide/include-diagnostics.md b/docs/ide/include-diagnostics.md index 6e8fb58ee1e..c28d372ff29 100644 --- a/docs/ide/include-diagnostics.md +++ b/docs/ide/include-diagnostics.md @@ -13,9 +13,9 @@ Starting with Visual Studio 17.8, Visual Studio helps you analyze your C++ `#inc - Displays how often, and where, something from each header file is used. - Displays the build time for each `#include` file--which helps you identify opportunities to optimize your build time. -## Enable Include Diagnostics and CodeLens +## Enable C++ Include Diagnostics and CodeLens -The Include Diagnostics feature is off by default. To turn it on, right-click in the code editor to bring up the context menu, and choose **Include Directives** > **Turn #include Diagnostics On**. +The C++ Include Diagnostics feature is off by default. To turn it on, right-click in the code editor to bring up the context menu, and choose **Include Directives** > **Turn #include Diagnostics On**. :::image type="complex" source="media/vs2022-enable-include-diagnostics.png" alt-text="A screenshot of the context menu that appears when you right-click in the code editor area."::: The context menu shows the include directives option highlighted, which reveals two options: Sort # include directives and turn # include diagnostics on. @@ -66,7 +66,7 @@ int main() } ``` -When Include Diagnostics is turned on, the number of times code from a header file is referenced in the current code file is displayed above the header file. It looks like this for the previous code sample: +When C++ Include Diagnostics are turned on, the number of times code from a header file is referenced in the current code file is displayed above the header file. It looks like this for the previous code sample: ```cpp 6 references @@ -77,8 +77,8 @@ When Include Diagnostics is turned on, the number of times code from a header fi In the code editor, select **5 references** above `#include ` and a summary of locations where code from `` is used in this file is displayed: -:::image type="complex" source="media/visual-studio-2022-codelens-include-references.png" alt-text="A screenshot of the include diagnostics context window showing where code from the vector header file is used."::: -The include diagnostics context window shows that there are five places in the code where code from the vector header file is used in the current code file. For example, it's used twice on the definition of the add10 function, as a return value and parameter. It's used on line 17 in the declaration of newVec, and so on. +:::image type="complex" source="media/visual-studio-2022-codelens-include-references.png" alt-text="A screenshot of the C++ Include Diagnostics context window showing where code from the vector header file is used."::: +The C++ Include Diagnostics context window shows that there are five places in the code where code from the vector header file is used in the current code file. For example, it's used twice on the definition of the add10 function, as a return value and parameter. It's used on line 17 in the declaration of newVec, and so on. :::image-end::: Select an item to go to its location in your code. @@ -98,7 +98,7 @@ Turn on Build Insights from the main menu bar by selecting **Build** > **Run Bui If you have an `#include` directive that is used infrequently, but significantly impacts your compile time, this tool can help you identify it. -In this article, you've seen how to turn on Include Diagnostics and CodeLens, and how to use Include Diagnostics to analyze how often something from an include file is used and how an `#include` impacts build time. +In this article, you've seen how to turn on C++ Include Diagnostics and CodeLens, and how to use C++ Include Diagnostics to analyze how often something from an include file is used and how an `#include` impacts build time. ## See also From aa208734f78a6b4cf1347ff6168d98a6c990d7f7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Feb 2024 13:17:13 -0800 Subject: [PATCH 9/9] fix github #4953 --- docs/overview/visual-cpp-language-conformance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 1ac73a838eb..0996e5c48c3 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -116,7 +116,7 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P1099R5 Using enum`](https://wg21.link/P1099R5) | VS 2019 16.4 [20](#note_20) | |  [`P1186R3 When do you actually use <=>`](https://wg21.link/P1186R3) | VS 2019 16.4 [20](#note_20) | |  [`P1630R1 Spaceship needs a tune-up`](https://wg21.link/P1630R1) | VS 2019 16.4 [20](#note_20) | -|  [`P0306R4 Adding __VA_OPT__ for comma omission and comma deletion`](https://wg21.link/P0306R4) | VS 2019 16.5 [20](#note_20) | +|  [`P0306R4 Adding __VA_OPT__ for comma omission and comma deletion`](https://wg21.link/P0306R4) | VS 2019 16.5. To provide better backward compatibility, `__VA_OPT__` is enabled under `/Zc:preprocessor` across all language versions. | |  [`P0614R1 Range-based for-loops with initializers`](https://wg21.link/P0614R1) | VS 2019 16.5 [20](#note_20) | |  [`P0683R1 Default member initializers for bit-fields`](https://wg21.link/P0683R1) | VS 2019 16.5 [20](#note_20) | |  [`P1002R1 try-catch blocks in constexpr functions`](https://wg21.link/P1002R1) | VS 2019 16.5 [20](#note_20) |